diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2020-03-11 20:56:06 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2020-03-20 20:49:02 +0800 |
commit | 6073e803bd652cd8fdb17f6be6beea05a13fd4f0 (patch) | |
tree | 6b59cd37fda9f3c44ce66279d48c3f7b80fb8f39 /jbig2dec | |
parent | 1e9b5185c889266c9a3d6f25c9df558d41335d46 (diff) | |
download | ghostpdl-6073e803bd652cd8fdb17f6be6beea05a13fd4f0.tar.gz |
jbig2dec: Handle errors from reading jbig2 streams.
Diffstat (limited to 'jbig2dec')
-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); |