From c213f555bc7dfca0358071a8edcb7a287e6a7c06 Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Jul 17 2012 14:29:18 +0000 Subject: Fix a number of compiler warnings per feedback from Ubuntu security team (#840608) --- diff --git a/jbigkit-2.0-warnings.patch b/jbigkit-2.0-warnings.patch new file mode 100644 index 0000000..18c15d5 --- /dev/null +++ b/jbigkit-2.0-warnings.patch @@ -0,0 +1,256 @@ +diff -up jbigkit/libjbig/tstcodec85.c.warnings jbigkit/libjbig/tstcodec85.c +--- jbigkit/libjbig/tstcodec85.c.warnings 2008-08-23 22:06:31.000000000 +0200 ++++ jbigkit/libjbig/tstcodec85.c 2012-07-17 16:18:42.326419366 +0200 +@@ -334,7 +334,7 @@ int main(int argc, char **argv) + for (i = 0; i < 16 * 16 && !trouble; i++) { + pix = arith_decode(sd, (t82cx[i >> 4] >> ((15 - i) & 15)) & 1); + if (pix < 0) { +- printf("Problem at pixel %ld, byte %d.\n\n", ++ printf("Problem at pixel %ld, byte %td.\n\n", + i+1, sd->pscd_ptr - sd->pscd_end); + trouble++; + break; +@@ -346,7 +346,7 @@ int main(int argc, char **argv) + } + } + if (!trouble && sd->pscd_ptr != sd->pscd_end - 2) { +- printf("%d bytes left after decoder finished.\n\n", ++ printf("%td bytes left after decoder finished.\n\n", + sd->pscd_end - sd->pscd_ptr - 2); + trouble++; + } +@@ -374,7 +374,7 @@ int main(int argc, char **argv) + pix = arith_decode(sd, (t82cx[i >> 4] >> ((15 - i) & 15)) & 1); + } + if (pix < 0) { +- printf("Problem at pixel %ld, byte %d.\n\n", ++ printf("Problem at pixel %ld, byte %td.\n\n", + i+1, sd->pscd_ptr - sd->pscd_end); + trouble++; + break; +@@ -386,7 +386,7 @@ int main(int argc, char **argv) + } + } + if (!trouble && sd->pscd_ptr != sd->pscd_end - 2) { +- printf("%d bytes left after decoder finished.\n\n", ++ printf("%td bytes left after decoder finished.\n\n", + sd->pscd_end - sd->pscd_ptr - 2); + trouble++; + } +diff -up jbigkit/libjbig/tstcodec.c.warnings jbigkit/libjbig/tstcodec.c +--- jbigkit/libjbig/tstcodec.c.warnings 2008-08-30 19:20:58.000000000 +0200 ++++ jbigkit/libjbig/tstcodec.c 2012-07-17 16:17:28.649420322 +0200 +@@ -399,7 +399,7 @@ int main(int argc, char **argv) + for (i = 0; i < 16 * 16 && !trouble; i++) { + pix = arith_decode(sd, (t82cx[i >> 4] >> ((15 - i) & 15)) & 1); + if (pix < 0) { +- printf("Problem at pixel %ld, byte %d.\n\n", ++ printf("Problem at pixel %ld, byte %td.\n\n", + i+1, sd->pscd_ptr - sd->pscd_end); + trouble++; + break; +@@ -411,7 +411,7 @@ int main(int argc, char **argv) + } + } + if (!trouble && sd->pscd_ptr != sd->pscd_end - 2) { +- printf("%d bytes left after decoder finished.\n\n", ++ printf("%td bytes left after decoder finished.\n\n", + sd->pscd_end - sd->pscd_ptr - 2); + trouble++; + } +@@ -439,7 +439,7 @@ int main(int argc, char **argv) + pix = arith_decode(sd, (t82cx[i >> 4] >> ((15 - i) & 15)) & 1); + } + if (pix < 0) { +- printf("Problem at pixel %ld, byte %d.\n\n", ++ printf("Problem at pixel %ld, byte %td.\n\n", + i+1, sd->pscd_ptr - sd->pscd_end); + trouble++; + break; +@@ -451,7 +451,7 @@ int main(int argc, char **argv) + } + } + if (!trouble && sd->pscd_ptr != sd->pscd_end - 2) { +- printf("%d bytes left after decoder finished.\n\n", ++ printf("%td bytes left after decoder finished.\n\n", + sd->pscd_end - sd->pscd_ptr - 2); + trouble++; + } +diff -up jbigkit/pbmtools/jbgtopbm.c.warnings jbigkit/pbmtools/jbgtopbm.c +--- jbigkit/pbmtools/jbgtopbm.c.warnings 2008-08-27 23:37:45.000000000 +0200 ++++ jbigkit/pbmtools/jbgtopbm.c 2012-07-17 16:21:19.501283868 +0200 +@@ -110,7 +110,7 @@ void fprint_bytes(FILE *f, unsigned char + for (i = 0; i < len && i < max; i++) + fprintf(f, "%02x ", p[i]); + if (len > i) +- fprintf(f, "... %d bytes total", len); ++ fprintf(f, "... %zd bytes total", len); + fprintf(f, "\n"); + } + +@@ -134,7 +134,7 @@ void diagnose_bie(FILE *fin) + /* read BIH */ + read_file(&bie, &buflen, &len, fin); + if (len < 20) { +- fprintf(f, "Error: Input file is %d < 20 bytes long and therefore " ++ fprintf(f, "Error: Input file is %zd < 20 bytes long and therefore " + "does not contain an intact BIE header!\n", len); + return; + } +@@ -188,18 +188,18 @@ void diagnose_bie(FILE *fin) + == (JBG_DPON | JBG_DPPRIV)) + p += 1728; /* skip DPTABLE */ + if (p > bie + len) { +- fprintf(f, "Error: Input file is %d < 20+1728 bytes long and therefore " ++ fprintf(f, "Error: Input file is %zd < 20+1728 bytes long and therefore " + "does not contain an intact BIE header with DPTABLE!\n", len); + return; + } + while (p != bie + len) { + if (p > bie + len - 2) { +- fprintf(f, "%06x: Error: single byte 0x%02x left\n", p - bie, *p); ++ fprintf(f, "%06tx: Error: single byte 0x%02x left\n", p - bie, *p); + return; + } + pnext = jbg_next_pscdms(p, len - (p - bie)); + if (p[0] != MARKER_ESC || p[1] == MARKER_STUFF) { +- fprintf(f, "%06x: PSCD: ", p - bie); ++ fprintf(f, "%06tx: PSCD: ", p - bie); + fprint_bytes(f, p, pnext ? (size_t) (pnext - p) : len - (p - bie), 60); + if (!pnext) { + fprintf(f, "Error: PSCD not terminated by SDNORM or SDRST marker\n"); +@@ -209,7 +209,7 @@ void diagnose_bie(FILE *fin) + switch (p[1]) { + case MARKER_SDNORM: + case MARKER_SDRST: +- fprintf(f, "%06x: ESC %s, ending SDE #%lu", p - bie, ++ fprintf(f, "%06tx: ESC %s, ending SDE #%lu", p - bie, + (p[1] == MARKER_SDNORM) ? "SDNORM" : "SDRST", ++sde); + if (sde == sdes) + fprintf(f, " (final SDE)"); +@@ -219,10 +219,10 @@ void diagnose_bie(FILE *fin) + fprintf(f, "\n"); + break; + case MARKER_ABORT: +- fprintf(f, "%06x: ESC ABORT\n", p - bie); ++ fprintf(f, "%06tx: ESC ABORT\n", p - bie); + break; + case MARKER_NEWLEN: +- fprintf(f, "%06x: ESC NEWLEN ", p - bie); ++ fprintf(f, "%06tx: ESC NEWLEN ", p - bie); + if (p + 5 < bie + len) { + fprintf(f, "YD = %lu\n", + yd = (((long) p[2] << 24) | ((long) p[3] << 16) | +@@ -242,7 +242,7 @@ void diagnose_bie(FILE *fin) + fprintf(f, "unexpected EOF\n"); + break; + case MARKER_ATMOVE: +- fprintf(f, "%06x: ESC ATMOVE ", p - bie); ++ fprintf(f, "%06tx: ESC ATMOVE ", p - bie); + if (p + 7 < bie + len) + fprintf(f, "YAT = %lu, tX = %d, tY = %d\n", + (((long) p[2] << 24) | ((long) p[3] << 16) | +@@ -251,7 +251,7 @@ void diagnose_bie(FILE *fin) + fprintf(f, "unexpected EOF\n"); + break; + case MARKER_COMMENT: +- fprintf(f, "%06x: ESC COMMENT ", p - bie); ++ fprintf(f, "%06tx: ESC COMMENT ", p - bie); + if (p + 5 < bie + len) + fprintf(f, "LC = %lu\n", + (((long) p[2] << 24) | ((long) p[3] << 16) | +@@ -260,7 +260,7 @@ void diagnose_bie(FILE *fin) + fprintf(f, "unexpected EOF\n"); + break; + default: +- fprintf(f, "%06x: ESC 0x%02x\n", p - bie, p[1]); ++ fprintf(f, "%06tx: ESC 0x%02x\n", p - bie, p[1]); + } + if (!pnext) { + fprintf(f, "Error encountered!\n"); +@@ -372,7 +372,7 @@ int main (int argc, char **argv) + /* read BIH first to check VLENGTH */ + len = fread(buffer, 1, 20, fin); + if (len < 20) { +- fprintf(stderr, "Input file '%s' (%d bytes) must be at least " ++ fprintf(stderr, "Input file '%s' (%zd bytes) must be at least " + "20 bytes long\n", fnin, len); + if (fout != stdout) { + fclose(fout); +diff -up jbigkit/pbmtools/pbmtojbg85.c.warnings jbigkit/pbmtools/pbmtojbg85.c +--- jbigkit/pbmtools/pbmtojbg85.c.warnings 2008-08-26 00:26:39.000000000 +0200 ++++ jbigkit/pbmtools/pbmtojbg85.c 2012-07-17 16:24:56.741332942 +0200 +@@ -72,9 +72,12 @@ static unsigned long getint(FILE *f) + while ((c = getc(f)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) { + ungetc(c, f); +- fscanf(f, "%lu", &i); ++ if (fscanf(f, "%lu", &i) != 1) { ++ /* should never fail, since c must be a digit */ ++ fprintf(stderr, "Unexpected failure reading digit '%c'\n", c); ++ exit(1); ++ } + } +- + return i; + } + +@@ -239,7 +242,9 @@ int main (int argc, char **argv) + break; + case '4': + /* PBM raw binary format */ +- fread(next_line, bpl, 1, fin); ++ if (fread(next_line, bpl, 1, fin) != 1) { ++ /* silence compiler warnings; ferror/feof checked below */ ++ } + break; + default: + fprintf(stderr, "Unsupported PBM type P%c!\n", type); +diff -up jbigkit/pbmtools/pbmtojbg.c.warnings jbigkit/pbmtools/pbmtojbg.c +--- jbigkit/pbmtools/pbmtojbg.c.warnings 2008-07-16 22:59:41.000000000 +0200 ++++ jbigkit/pbmtools/pbmtojbg.c 2012-07-17 16:23:46.584285686 +0200 +@@ -88,7 +88,11 @@ static unsigned long getint(FILE *f) + while ((c = getc(f)) != EOF && !(c == 13 || c == 10)) ; + if (c != EOF) { + ungetc(c, f); +- fscanf(f, "%lu", &i); ++ if (fscanf(f, "%lu", &i) != 1) { ++ /* should never fail, since c must be a digit */ ++ fprintf(stderr, "Unexpected failure reading digit '%c'\n", c); ++ exit(1); ++ } + } + + return i; +@@ -302,7 +306,9 @@ int main (int argc, char **argv) + break; + case '4': + /* PBM raw binary format */ +- fread(bitmap[0], bitmap_size, 1, fin); ++ if (fread(bitmap[0], bitmap_size, 1, fin) != 1) { ++ /* silence compiler warnings; ferror/feof checked below */ ++ } + break; + case '2': + case '5': +@@ -314,8 +320,18 @@ int main (int argc, char **argv) + for (j = 0; j < bpp; j++) + image[x * bpp + (bpp - 1) - j] = v >> (j * 8); + } +- } else +- fread(image, width * height, bpp, fin); ++ } else { ++ if (fread(image, width * height, bpp, fin) != (size_t) bpp) { ++ if (ferror(fin)) { ++ fprintf(stderr, "Problem while reading input file '%s", fnin); ++ perror("'"); ++ exit(1); ++ } else { ++ fprintf(stderr, "Unexpected end of input file '%s'!\n", fnin); ++ exit(1); ++ } ++ } ++ } + jbg_split_planes(width, height, planes, encode_planes, image, bitmap, + use_graycode); + free(image); diff --git a/jbigkit.spec b/jbigkit.spec index 5ccb54d..6408c5f 100644 --- a/jbigkit.spec +++ b/jbigkit.spec @@ -1,6 +1,6 @@ Name: jbigkit Version: 2.0 -Release: 6%{?dist} +Release: 7%{?dist} Summary: JBIG1 lossless image compression tools Group: Development/Libraries @@ -8,6 +8,7 @@ License: GPLv2+ URL: http://www.cl.cam.ac.uk/~mgk25/jbigkit/ Source0: http://www.cl.cam.ac.uk/~mgk25/download/jbigkit-%{version}.tar.gz Patch0: jbigkit-2.0-shlib.patch +Patch1: jbigkit-2.0-warnings.patch %package libs Summary: JBIG1 lossless image compression library @@ -44,6 +45,7 @@ formats. %prep %setup -q -n jbigkit %patch0 -p1 -b .shlib +%patch1 -p1 -b .warnings %build make %{?_smp_mflags} CCFLAGS="$RPM_OPT_FLAGS" @@ -88,6 +90,9 @@ make test %{_includedir}/jbig*.h %changelog +* Tue Jul 17 2012 Jiri Popelka - 2.0-7 +- Fix a number of compiler warnings per feedback from Ubuntu security team (#840608) + * Mon Apr 16 2012 Jiri Popelka - 2.0-6 - Don't install up-to-date license file, use the upstream one. (#807760)