[gs-cvs] rev 9072 - trunk/gs/base

ken at ghostscript.com ken at ghostscript.com
Sat Sep 6 02:57:38 PDT 2008


Author: ken
Date: 2008-09-06 02:57:38 -0700 (Sat, 06 Sep 2008)
New Revision: 9072

Modified:
   trunk/gs/base/gdevpdfe.c
   trunk/gs/base/gdevpdtd.c
   trunk/gs/base/gdevpdte.c
   trunk/gs/base/gdevpdtf.c
   trunk/gs/base/gdevpdti.c
   trunk/gs/base/gdevpdtt.c
   trunk/gs/base/gdevpdtw.c
Log:
Address some more issues raised by Coverity. Check return values in some places which were
not previously checked, initialise some variables, and remove some dead code.

Local regression testing of pdfwrite shows no differences.

Expected Differences:
None


Modified: trunk/gs/base/gdevpdfe.c
===================================================================
--- trunk/gs/base/gdevpdfe.c	2008-09-04 15:46:56 UTC (rev 9071)
+++ trunk/gs/base/gdevpdfe.c	2008-09-06 09:57:38 UTC (rev 9072)
@@ -841,12 +841,9 @@
     */
     if (pdev->PDFA) {
 	pdf_resource_t *pres;
-	byte digest[6];
 	int code;
 	int options = DATA_STREAM_NOT_BINARY;
 
-	sflush(pdev->strm);
-	s_MD5C_get_digest(pdev->strm, digest, sizeof(digest));
 	if (pdev->EncryptMetadata)
 	    options |= DATA_STREAM_ENCRYPT;
 	code = pdf_open_aside(pdev, resourceOther, gs_no_id, &pres, true, options);

Modified: trunk/gs/base/gdevpdtd.c
===================================================================
--- trunk/gs/base/gdevpdtd.c	2008-09-04 15:46:56 UTC (rev 9071)
+++ trunk/gs/base/gdevpdtd.c	2008-09-06 09:57:38 UTC (rev 9072)
@@ -194,10 +194,16 @@
 	int Flags = pfd->values.Flags;
 	pdf_font_descriptor_t defaults;
 
-	param_write_int(plist, "Flags", &Flags);
-	gs_param_write_items(plist, pfd, NULL, required_items);
+	code = param_write_int(plist, "Flags", &Flags);
+	if (code < 0) 
+	    return code;
+	code = gs_param_write_items(plist, pfd, NULL, required_items);
+	if (code < 0) 
+	    return code;
 	memset(&defaults, 0, sizeof(defaults));
-	gs_param_write_items(plist, pfd, &defaults, optional_items);
+	code = gs_param_write_items(plist, pfd, &defaults, optional_items);
+	if (code < 0) 
+	    return code;
 	s_release_param_printer(&rlist);
     }
     return 0;

Modified: trunk/gs/base/gdevpdte.c
===================================================================
--- trunk/gs/base/gdevpdte.c	2008-09-04 15:46:56 UTC (rev 9071)
+++ trunk/gs/base/gdevpdte.c	2008-09-06 09:57:38 UTC (rev 9072)
@@ -812,9 +812,14 @@
 	 pte->text.space.s_char : -1);
     gs_point start, total;
     pdf_font_resource_t *pdfont3 = NULL;
+    int code;
 
-    if (font->FontType == ft_user_defined)
-	pdf_attached_font_resource(pdev, font, &pdfont3, NULL, NULL, NULL, NULL);
+    if (font->FontType == ft_user_defined) {
+	code = pdf_attached_font_resource(pdev, font, &pdfont3, NULL, NULL, NULL, NULL);
+        if (code < 0)
+	    return code;
+
+    }
     pte->text.data.bytes = pstr->data;
     pte->text.size = pstr->size;
     pte->index = 0;
@@ -834,7 +839,7 @@
 	gs_point v = {0, 0}; /* design space */
 	gs_char chr;
 	gs_glyph glyph;
-	int code, index = pte->index;
+	int index = pte->index;
 	gs_text_enum_t pte1 = *(gs_text_enum_t *)pte;
 	int FontType;
 #if RIGHT_SBW

Modified: trunk/gs/base/gdevpdtf.c
===================================================================
--- trunk/gs/base/gdevpdtf.c	2008-09-04 15:46:56 UTC (rev 9071)
+++ trunk/gs/base/gdevpdtf.c	2008-09-06 09:57:38 UTC (rev 9072)
@@ -472,9 +472,6 @@
 	               "font_resource_encoded_alloc");
 	return_error(gs_error_VMerror);
     }
-    if (code < 0) {
-	return code;
-    }
     memset(v, 0, 256 * sizeof(*v));
     memset(Encoding, 0, 256 * sizeof(*Encoding));
     for (i = 0; i < 256; ++i)
@@ -635,7 +632,7 @@
     psf_glyph_enum_t genum;
     gs_glyph glyph;
     gs_const_string str;
-    int code, j, l;
+    int code, j = 0, l;
     const int sl = strlen(gx_extendeg_glyph_name_separator);
 
     psf_enumerate_glyphs_begin(&genum, (gs_font *)pfont, NULL, 0, GLYPH_SPACE_NAME);

Modified: trunk/gs/base/gdevpdti.c
===================================================================
--- trunk/gs/base/gdevpdti.c	2008-09-04 15:46:56 UTC (rev 9071)
+++ trunk/gs/base/gdevpdti.c	2008-09-06 09:57:38 UTC (rev 9072)
@@ -315,8 +315,6 @@
     code = pdf_begin_encrypt(pdev, &pdev->strm, pres->object->id);
     if (code < 0)
 	return code;
-    if (code < 0)
-	return code;
     pcp->y_offset = y_offset;
     font->u.simple.s.type3.FontBBox.p.y =
 	min(font->u.simple.s.type3.FontBBox.p.y, y_offset);

Modified: trunk/gs/base/gdevpdtt.c
===================================================================
--- trunk/gs/base/gdevpdtt.c	2008-09-04 15:46:56 UTC (rev 9071)
+++ trunk/gs/base/gdevpdtt.c	2008-09-06 09:57:38 UTC (rev 9072)
@@ -120,6 +120,9 @@
     default:
 	return_error(gs_error_rangecheck);
     }
+    if (penum->pte_default == NULL)
+	return_error(gs_error_unregistered); /* Must not happen. */
+
     if (penum->current_font->FontType == ft_user_defined && 
 	    penum->outer_CID == GS_NO_GLYPH &&
 	    !(penum->pte_default->text.operation & TEXT_DO_CHARWIDTH)) {
@@ -135,8 +138,6 @@
 	    int narg = (control == TEXT_SET_CHAR_WIDTH ? 2 : 
 			control == TEXT_SET_CACHE_DEVICE ? 6 : 10), i;
 
-	    if (penum->pte_default == NULL)
-		return_error(gs_error_unregistered); /* Must not happen. */
 	    /* Check to verify the structure type is really gs_show_enum */
 	    if (gs_object_type(penum->pte_default->memory, penum->pte_default) != &st_gs_show_enum) {
 		/* Must not happen with PS interpreter. 
@@ -1541,9 +1542,12 @@
 	    pdfont->u.simple.last_reserved_char = last_reserved_char;
 	/* Change glyphs to char codes in the text : */
 	for (i = 0; i < pstr->size; i++) {
-	    /* A trick : pdf_reserve_char_code_in_pdfont here simply encodes with cgp. */
-	    ch = pdf_reserve_char_code_in_pdfont(pdfont, cgp, gdata[i], &pdfont->u.simple.last_reserved_char);
-	    pstr->data[i] = ch;
+	    /* Picked up by Coverity, if pdfont is NULL then the call would dereference it */
+	    if (pdfont != NULL) {
+		/* A trick : pdf_reserve_char_code_in_pdfont here simply encodes with cgp. */
+		ch = pdf_reserve_char_code_in_pdfont(pdfont, cgp, gdata[i], &pdfont->u.simple.last_reserved_char);
+		pstr->data[i] = ch;
+	    }
 	}
 	return 0;
     }
@@ -1677,6 +1681,9 @@
     gs_char char_code, cid;
     gs_glyph glyph;
 
+    if (glyph_usage == NULL)
+	return 0;
+
     if (pstr != NULL) {
 	scan.text.data.bytes = pstr->data;
 	scan.text.size = pstr->size;
@@ -1696,7 +1703,7 @@
 	    continue;
 	if (code < 0)
 	    return code;
-	if (glyph_usage != 0 && cid >= char_cache_size)
+	if (cid >= char_cache_size)
 	    continue;
 	glyph_usage[cid / 8] |= 0x80 >> (cid & 7);
     }
@@ -2438,7 +2445,7 @@
 		len = min(gs_font_name_max, penum->current_font->font_name.size);
 		memcpy(FontName, penum->current_font->font_name.chars, len);
 		FontName[len] = 0x00;
-		len = min(255, penum->current_font->key_name.size);
+		len = min(gs_font_name_max, penum->current_font->key_name.size);
 		memcpy(KeyName, penum->current_font->key_name.chars, len);
 		KeyName[len] = 0x00;
 

Modified: trunk/gs/base/gdevpdtw.c
===================================================================
--- trunk/gs/base/gdevpdtw.c	2008-09-04 15:46:56 UTC (rev 9071)
+++ trunk/gs/base/gdevpdtw.c	2008-09-06 09:57:38 UTC (rev 9072)
@@ -343,23 +343,21 @@
 		gs_font_base *pfont = pdf_font_resource_font(pdfont, false);
 		gs_glyph_info_t info;
 
-		if (pdfont != NULL) {
-		    if (pfont->FontType == ft_TrueType) {
-			/* We're converting a Type 42 into CIDFontType2. */
-			/* We know that CIDs equal to char codes. */
-			gs_glyph glyph1;
-			int ch = glyph & 0xff;
+		if (pfont->FontType == ft_TrueType) {
+		    /* We're converting a Type 42 into CIDFontType2. */
+		    /* We know that CIDs equal to char codes. */
+		    gs_glyph glyph1;
+		    int ch = glyph & 0xff;
 
-			glyph1 = pfont->procs.encode_char((gs_font *)pfont, ch, GLYPH_SPACE_NAME);
-			if (cid == 0 && glyph1 == GS_NO_GLYPH)
-			    glyph1 = copied_get_notdef((gs_font *)pdf_font_resource_font(pdfont, false));
-			if (glyph1 == GS_NO_GLYPH)
-			    continue;
-			if (pfont->procs.glyph_info((gs_font *)pfont, glyph1, NULL, 0, &info) < 0)
-			    continue;
-		    } else if (pfont->procs.glyph_info((gs_font *)pfont, glyph, NULL, 0, &info) < 0)
-			continue;
-		}
+		    glyph1 = pfont->procs.encode_char((gs_font *)pfont, ch, GLYPH_SPACE_NAME);
+		    if (cid == 0 && glyph1 == GS_NO_GLYPH)
+		        glyph1 = copied_get_notdef((gs_font *)pdf_font_resource_font(pdfont, false));
+		    if (glyph1 == GS_NO_GLYPH)
+		        continue;
+		    if (pfont->procs.glyph_info((gs_font *)pfont, glyph1, NULL, 0, &info) < 0)
+		        continue;
+		} else if (pfont->procs.glyph_info((gs_font *)pfont, glyph, NULL, 0, &info) < 0)
+		    continue;
 	    }
 #endif
 	    if (cid == prev + 1) {



More information about the gs-cvs mailing list