ref: 558a1777768dfecb3142c892a0564efcd7043409
parent: f741b92938efb8283ad51aa71d5ae1af9505bbd5
author: Sebastian Rasmussen <sebras@gmail.com>
date: Sun Jul 1 09:19:43 EDT 2018
jbig2dec: Warn on out of range symbol IDs, but continue.
--- a/jbig2_text.c
+++ b/jbig2_text.c
@@ -344,12 +344,10 @@
goto cleanup2;
}
if (ID >= SBNUMSYMS) {- code = jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "symbol id out of range! (%d/%d)", ID, SBNUMSYMS);
- goto cleanup2;
- }
-
- /* (3c.v) / 6.4.11 - look up the symbol bitmap IB */
- {+ jbig2_error(ctx, JBIG2_SEVERITY_WARNING, segment->number, "symbol id out of range, ignoring (%d/%d)", ID, SBNUMSYMS);
+ IB = NULL;
+ } else {+ /* (3c.v) / 6.4.11 - look up the symbol bitmap IB */
uint32_t id = ID;
index = 0;
@@ -475,17 +473,28 @@
y = T;
break;
case JBIG2_CORNER_TOPRIGHT:
- x = S - IB->width + 1;
+ if (IB)
+ x = S - IB->width + 1;
+ else
+ x = S + 1;
y = T;
break;
case JBIG2_CORNER_BOTTOMLEFT:
x = S;
- y = T - IB->height + 1;
+ if (IB)
+ y = T - IB->height + 1;
+ else
+ y = T + 1;
break;
default:
case JBIG2_CORNER_BOTTOMRIGHT:
- x = S - IB->width + 1;
- y = T - IB->height + 1;
+ if (IB ) {+ x = S - IB->width + 1;
+ y = T - IB->height + 1;
+ } else {+ x = S + 1;
+ y = T + 1;
+ }
break;
}
} else { /* TRANSPOSED */@@ -495,17 +504,28 @@
y = S;
break;
case JBIG2_CORNER_TOPRIGHT:
- x = T - IB->width + 1;
+ if (IB)
+ x = T - IB->width + 1;
+ else
+ x = T + 1;
y = S;
break;
case JBIG2_CORNER_BOTTOMLEFT:
x = T;
- y = S - IB->height + 1;
+ if (IB)
+ y = S - IB->height + 1;
+ else
+ y = S + 1;
break;
default:
case JBIG2_CORNER_BOTTOMRIGHT:
- x = T - IB->width + 1;
- y = S - IB->height + 1;
+ if (IB) {+ x = T - IB->width + 1;
+ y = S - IB->height + 1;
+ } else {+ x = T + 1;
+ y = S + 1;
+ }
break;
}
}
@@ -522,9 +542,9 @@
}
/* (3c.x) */
- if ((!params->TRANSPOSED) && (params->REFCORNER < 2)) {+ if (IB && (!params->TRANSPOSED) && (params->REFCORNER < 2)) {CURS += IB->width - 1;
- } else if ((params->TRANSPOSED) && (params->REFCORNER & 1)) {+ } else if (IB && (params->TRANSPOSED) && (params->REFCORNER & 1)) {CURS += IB->height - 1;
}
--
⑨