summaryrefslogtreecommitdiff
path: root/jbig2dec
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2020-03-11 20:56:06 +0800
committerSebastian Rasmussen <sebras@gmail.com>2020-03-20 20:49:02 +0800
commit6073e803bd652cd8fdb17f6be6beea05a13fd4f0 (patch)
tree6b59cd37fda9f3c44ce66279d48c3f7b80fb8f39 /jbig2dec
parent1e9b5185c889266c9a3d6f25c9df558d41335d46 (diff)
downloadghostpdl-6073e803bd652cd8fdb17f6be6beea05a13fd4f0.tar.gz
jbig2dec: Handle errors from reading jbig2 streams.
Diffstat (limited to 'jbig2dec')
-rw-r--r--jbig2dec/jbig2dec.c25
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);