diff options
Diffstat (limited to 'jbig2dec/jbig2dec.c')
-rw-r--r-- | jbig2dec/jbig2dec.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/jbig2dec/jbig2dec.c b/jbig2dec/jbig2dec.c index 4a96bde80..79f682d3e 100644 --- a/jbig2dec/jbig2dec.c +++ b/jbig2dec/jbig2dec.c @@ -635,11 +635,23 @@ main(int argc, char **argv) /* pull the whole file/global stream into memory */ for (;;) { int n_bytes = fread(buf, 1, sizeof(buf), f); - + if (n_bytes < 0) { + if (f_page != NULL) + jbig2_error(ctx, JBIG2_SEVERITY_WARNING, JBIG2_UNKNOWN_SEGMENT_NUMBER, "unable to read jbig2 global stream"); + else + jbig2_error(ctx, JBIG2_SEVERITY_WARNING, JBIG2_UNKNOWN_SEGMENT_NUMBER, "unable to read jbig2 page stream"); + } if (n_bytes <= 0) break; - if (jbig2_data_in(ctx, buf, n_bytes)) + + if (jbig2_data_in(ctx, buf, (size_t) n_bytes) < 0) + { + if (f_page != NULL) + jbig2_error(ctx, JBIG2_SEVERITY_WARNING, JBIG2_UNKNOWN_SEGMENT_NUMBER, "unable to process jbig2 global stream"); + else + jbig2_error(ctx, JBIG2_SEVERITY_WARNING, JBIG2_UNKNOWN_SEGMENT_NUMBER, "unable to process jbig2 page stream"); break; + } } fclose(f); @@ -654,11 +666,16 @@ main(int argc, char **argv) for (;;) { int n_bytes = fread(buf, 1, sizeof(buf), f_page); - + if (n_bytes < 0) + jbig2_error(ctx, JBIG2_SEVERITY_WARNING, JBIG2_UNKNOWN_SEGMENT_NUMBER, "unable to read jbig2 page stream"); if (n_bytes <= 0) break; - if (jbig2_data_in(ctx, buf, n_bytes)) + + if (jbig2_data_in(ctx, buf, (size_t) n_bytes) < 0) + { + jbig2_error(ctx, JBIG2_SEVERITY_WARNING, JBIG2_UNKNOWN_SEGMENT_NUMBER, "unable to process jbig2 page stream"); break; + } } } fclose(f_page); |