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);