aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/ruby/ruby/CVE-2017-9229.patch
blob: 75bdfada57ebcc5e4c1e51715fd1cc52f790e011 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
commit b690371bbf97794b4a1d3f295d4fb9a8b05d402d
Author: K.Kosako <kosako@sofnec.co.jp>
Date:   Wed May 24 10:27:04 2017 +0900

    fix #59 : access to invalid address by reg->dmax value

Upstream-Status: Backport

CVE: CVE-2017-9229
Signed-off-by: Thiruvadi Rajaraman <trajaraman@mvista.com>

Index: ruby-2.2.5/regexec.c
===================================================================
--- ruby-2.2.5.orig/regexec.c	2017-09-13 12:17:08.429254209 +0530
+++ ruby-2.2.5/regexec.c	2017-09-13 12:24:03.365312311 +0530
@@ -3763,6 +3763,12 @@
     }
     else {
       if (reg->dmax != ONIG_INFINITE_DISTANCE) {
+        if (p - str < reg->dmax) {
+          *low = (UChar* )str;
+          if (low_prev)
+            *low_prev = onigenc_get_prev_char_head(reg->enc, str, *low, end);
+	}
+	else {
 	*low = p - reg->dmax;
 	if (*low > s) {
 	  *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,
@@ -3776,6 +3782,7 @@
 	    *low_prev = onigenc_get_prev_char_head(reg->enc,
 					       (pprev ? pprev : str), *low, end);
 	}
+	}
       }
     }
     /* no needs to adjust *high, *high is used as range check only */