gnu: openjpeg-2.*: Fix CVE-2016-7163.
[jackhill/guix/guix.git] / gnu / packages / patches / openjpeg-CVE-2016-7163.patch
1 Fix CVE-2016-7613 (Integer overflow in opj_pi_create_decode allowing execution
2 of arbitrary code):
3
4 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7163
5 https://github.com/uclouvain/openjpeg/issues/826
6 http://seclists.org/oss-sec/2016/q3/442
7
8 Copied from upstream repository:
9
10 https://github.com/uclouvain/openjpeg/commit/c16bc057ba3f125051c9966cf1f5b68a05681de4
11 https://github.com/uclouvain/openjpeg/commit/ef01f18dfc6780b776d0674ed3e7415c6ef54d24
12
13 From c16bc057ba3f125051c9966cf1f5b68a05681de4 Mon Sep 17 00:00:00 2001
14 From: trylab <trylab@users.noreply.github.com>
15 Date: Tue, 6 Sep 2016 13:55:49 +0800
16 Subject: [PATCH] Fix an integer overflow issue (#809)
17
18 Prevent an integer overflow issue in function opj_pi_create_decode of
19 pi.c.
20 ---
21 src/lib/openjp2/pi.c | 8 +++++++-
22 1 file changed, 7 insertions(+), 1 deletion(-)
23
24 diff --git a/src/lib/openjp2/pi.c b/src/lib/openjp2/pi.c
25 index cffad66..36e2ff0 100644
26 --- a/src/lib/openjp2/pi.c
27 +++ b/src/lib/openjp2/pi.c
28 @@ -1237,7 +1237,13 @@ opj_pi_iterator_t *opj_pi_create_decode(opj_image_t *p_image,
29 l_current_pi = l_pi;
30
31 /* memory allocation for include */
32 - l_current_pi->include = (OPJ_INT16*) opj_calloc((l_tcp->numlayers +1) * l_step_l, sizeof(OPJ_INT16));
33 + /* prevent an integer overflow issue */
34 + l_current_pi->include = 00;
35 + if (l_step_l <= (SIZE_MAX / (l_tcp->numlayers + 1U)))
36 + {
37 + l_current_pi->include = (OPJ_INT16*) opj_calloc((l_tcp->numlayers +1) * l_step_l, sizeof(OPJ_INT16));
38 + }
39 +
40 if
41 (!l_current_pi->include)
42 {
43 --
44 2.10.0
45
46 From ef01f18dfc6780b776d0674ed3e7415c6ef54d24 Mon Sep 17 00:00:00 2001
47 From: Matthieu Darbois <mayeut@users.noreply.github.com>
48 Date: Thu, 8 Sep 2016 07:34:46 +0200
49 Subject: [PATCH] Cast to size_t before multiplication
50
51 Need to cast to size_t before multiplication otherwise overflow check is useless.
52 ---
53 src/lib/openjp2/pi.c | 2 +-
54 1 file changed, 1 insertion(+), 1 deletion(-)
55
56 diff --git a/src/lib/openjp2/pi.c b/src/lib/openjp2/pi.c
57 index 36e2ff0..809b33d 100644
58 --- a/src/lib/openjp2/pi.c
59 +++ b/src/lib/openjp2/pi.c
60 @@ -1241,7 +1241,7 @@ opj_pi_iterator_t *opj_pi_create_decode(opj_image_t *p_image,
61 l_current_pi->include = 00;
62 if (l_step_l <= (SIZE_MAX / (l_tcp->numlayers + 1U)))
63 {
64 - l_current_pi->include = (OPJ_INT16*) opj_calloc((l_tcp->numlayers +1) * l_step_l, sizeof(OPJ_INT16));
65 + l_current_pi->include = (OPJ_INT16*) opj_calloc((size_t)(l_tcp->numlayers + 1U) * l_step_l, sizeof(OPJ_INT16));
66 }
67
68 if
69 --
70 2.10.0
71