File openjpeg2-CVE-2016-4797.patch of Package openjpeg2.36921

Index: openjpeg-2.1.0/src/lib/openjp2/tcd.c
===================================================================
--- openjpeg-2.1.0.orig/src/lib/openjp2/tcd.c
+++ openjpeg-2.1.0/src/lib/openjp2/tcd.c
@@ -691,8 +691,12 @@ OPJ_BOOL FUNCTION (     opj_tcd_t *p_tcd
                 l_tilec->y1 = opj_int_ceildiv(l_tile->y1, (OPJ_INT32)l_image_comp->dy);                                                                                                                                          \
                 /*fprintf(stderr, "\tTile compo border = %d,%d,%d,%d\n", l_tilec->x0, l_tilec->y0,l_tilec->x1,l_tilec->y1);*/                                                                                     \
                                                                     \
-                l_data_size = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0)           \
-                * (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0) * (OPJ_UINT32)sizeof(OPJ_UINT32 );\
+                l_data_size = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0);           \
+                if ((l_data_size > 0U) && ((((OPJ_UINT32)-1) / l_data_size) < (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0))) { \
+                        fprintf (stderr, "Size of data exceeds system limits\n"); \
+                        return OPJ_FALSE; \
+		} \
+                l_data_size *= (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0) * (OPJ_UINT32)sizeof(OPJ_UINT32 );\
                 l_tilec->numresolutions = l_tccp->numresolutions;   \
                 if (l_tccp->numresolutions < l_cp->m_specific_param.m_dec.m_reduce) {                                                                                                                             \
                         l_tilec->minimum_num_resolutions = 1;       \
openSUSE Build Service is sponsored by