File openjpeg2-CVE-2018-14423.patch of Package openjpeg2.26562

Index: openjpeg-2.1.0/src/lib/openjp3d/pi.c
===================================================================
--- openjpeg-2.1.0.orig/src/lib/openjp3d/pi.c
+++ openjpeg-2.1.0/src/lib/openjp3d/pi.c
@@ -215,6 +215,14 @@ static bool pi_next_rpcl(opj_pi_iterator
 						rpx = res->pdx + levelnox;
 						rpy = res->pdy + levelnoy;
 						rpz = res->pdz + levelnoz;
+
+						/* To avoid divisions by zero / undefined behaviour on shift */
+						if (rpx >= 31 || ((comp->dx << rpx) >> rpx) != comp->dx ||
+						    rpy >= 31 || ((comp->dy << rpy) >> rpy) != comp->dy ||
+						    rpz >= 31 || ((comp->dz << rpz) >> rpz) != comp->dz) {
+							continue;
+						}
+
 						if ((comp->dx << rpx) < 1)
 							continue;
 						if ((!(pi->x % (comp->dx << rpx) == 0) || (pi->x == pi->tx0 && (trx0 << levelnox) % (1 << rpx)))) {
@@ -315,6 +323,14 @@ for (pi->z = pi->tz0; pi->z < pi->tz1; p
 						rpx = res->pdx + levelnox;
 						rpy = res->pdy + levelnoy;
 						rpz = res->pdz + levelnoz;
+
+						/* To avoid divisions by zero / undefined behaviour on shift */
+						if (rpx >= 31 || ((comp->dx << rpx) >> rpx) != comp->dx ||
+						    rpy >= 31 || ((comp->dy << rpy) >> rpy) != comp->dy ||
+						    rpz >= 31 || ((comp->dz << rpz) >> rpz) != comp->dz) {
+							continue;
+						}
+
 						if ((comp->dx << rpx) < 1)
 							continue;
 						if ((!(pi->x % (comp->dx << rpx) == 0) || (pi->x == pi->tx0 && (trx0 << levelnox) % (1 << rpx)))) {
@@ -412,6 +428,14 @@ static bool pi_next_cprl(opj_pi_iterator
 						rpx = res->pdx + levelnox;
 						rpy = res->pdy + levelnoy;
 						rpz = res->pdz + levelnoz;
+
+						/* To avoid divisions by zero / undefined behaviour on shift */
+						if (rpx >= 31 || ((comp->dx << rpx) >> rpx) != comp->dx ||
+						    rpy >= 31 || ((comp->dy << rpy) >> rpy) != comp->dy ||
+						    rpz >= 31 || ((comp->dz << rpz) >> rpz) != comp->dz) {
+							continue;
+						}
+
 						if ((comp->dx << rpx) < 1)
 							continue;
 						if ((!(pi->x % (comp->dx << rpx) == 0) || (pi->x == pi->tx0 && (trx0 << levelnox) % (1 << rpx)))) {
openSUSE Build Service is sponsored by