[gs-cvs] rev 7062 - trunk/gs/src
alexcher at ghostscript.com
alexcher at ghostscript.com
Wed Sep 20 11:26:18 PDT 2006
Author: alexcher
Date: 2006-09-20 11:26:17 -0700 (Wed, 20 Sep 2006)
New Revision: 7062
Modified:
trunk/gs/src/gdevpdfm.c
trunk/gs/src/gdevprn.c
trunk/gs/src/gshtscr.c
Log:
Fix Valgrind warnings: (1) don't use sscanf on a non 0-terminated PS strings.
Temporaty replace the last character of the string with '\0' before scanning.
(2) Don't assign a structure to itself. Check for this case and skip the
assignment. Bug 688890.
DIFFERENCES:
None
Modified: trunk/gs/src/gdevpdfm.c
===================================================================
--- trunk/gs/src/gdevpdfm.c 2006-09-20 12:01:04 UTC (rev 7061)
+++ trunk/gs/src/gdevpdfm.c 2006-09-20 18:26:17 UTC (rev 7062)
@@ -2023,12 +2023,19 @@
gs_matrix ctm;
const pdfmark_name *pmn;
int code = 0;
+
+ { char *data = pts[-1].data;
+ int cnt, len = pts[-1].size;
- if (size < 2 ||
- sscanf((const char *)pts[-1].data, "[%g %g %g %g %g %g]",
- &ctm.xx, &ctm.xy, &ctm.yx, &ctm.yy, &ctm.tx, &ctm.ty) != 6
- )
+ if (size < 2 || len <= 0 || data[len - 1] != ']')
+ return_error(gs_error_rangecheck);
+ data[len - 1] = 0;
+ cnt = sscanf(data, "[%g %g %g %g %g %g",
+ &ctm.xx, &ctm.xy, &ctm.yx, &ctm.yy, &ctm.tx, &ctm.ty);
+ data[len - 1] = ']';
+ if (cnt != 6)
return_error(gs_error_rangecheck);
+ }
size -= 2; /* remove CTM & pdfmark name */
for (pmn = mark_names; pmn->mname != 0; ++pmn)
if (pdf_key_eq(pts, pmn->mname)) {
Modified: trunk/gs/src/gdevprn.c
===================================================================
--- trunk/gs/src/gdevprn.c 2006-09-20 12:01:04 UTC (rev 7061)
+++ trunk/gs/src/gdevprn.c 2006-09-20 18:26:17 UTC (rev 7062)
@@ -1039,7 +1039,8 @@
} else
bdev = (gx_device *)mdev;
/****** QUESTIONABLE, BUT BETTER THAN OMITTING ******/
- bdev->color_info = target->color_info;
+ if (&bdev->color_info != &target->color_info) /* Pacify Valgrind */
+ bdev->color_info = target->color_info;
*pbdev = bdev;
return 0;
}
Modified: trunk/gs/src/gshtscr.c
===================================================================
--- trunk/gs/src/gshtscr.c 2006-09-20 12:01:04 UTC (rev 7061)
+++ trunk/gs/src/gshtscr.c 2006-09-20 18:26:17 UTC (rev 7062)
@@ -481,7 +481,8 @@
gs_memory_t * mem)
{
penum->pgs = pgs; /* ensure clean for GC */
- penum->order = *porder;
+ if (&penum->order != porder) /* Pacify Valgrind */
+ penum->order = *porder;
penum->halftone.rc.memory = mem;
penum->halftone.type = ht_type_screen;
penum->halftone.params.screen = *phsp;
More information about the gs-cvs
mailing list