summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2017-07-29 15:52:11 +0200
committerEven Rouault <even.rouault@spatialys.com>2017-07-29 15:52:11 +0200
commit71b4f5b124d14ed609763b11e19d2d480bc32f58 (patch)
treeb37300bc2643cc8256b3988faf1207eea75118d3 /src/lib
parentd6654d906c1ae66590b6d600458a91f1ee923de5 (diff)
opj_pi_next_pcrl(): avoid undefined shift behaviour. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2787. Credit to OSS Fuzz
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/openjp2/pi.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lib/openjp2/pi.c b/src/lib/openjp2/pi.c
index 4e2e48ad..c256349b 100644
--- a/src/lib/openjp2/pi.c
+++ b/src/lib/openjp2/pi.c
@@ -526,7 +526,8 @@ static OPJ_BOOL opj_pi_next_pcrl(opj_pi_iterator_t * pi)
/* Avoids division by zero */
/* Relates to id_000004,sig_06,src_000679,op_arith8,pos_49,val_-17 */
/* of https://github.com/uclouvain/openjpeg/issues/938 */
- if (((comp->dx << levelno) >> levelno) != comp->dx ||
+ if (levelno >= 32 ||
+ ((comp->dx << levelno) >> levelno) != comp->dx ||
((comp->dy << levelno) >> levelno) != comp->dy) {
continue;
}