summaryrefslogtreecommitdiff
path: root/dev-libs/oniguruma/files/oniguruma-5.9.6-CVE-2017-9229.patch
blob: f2dbc55d59ac3b846304f16db8005947c96f6535 (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
37
38
39
40
41
42
43
https://github.com/kkos/oniguruma/issues/59
https://github.com/kkos/oniguruma/commit/b690371bbf97794b4a1d3f295d4fb9a8b05d402d

Author: K.Kosako <kosako@sofnec.co.jp>

--- a/regexec.c
+++ b/regexec.c
@@ -3207,18 +3207,25 @@
     }
     else {
       if (reg->dmax != ONIG_INFINITE_DISTANCE) {
-	*low = p - reg->dmax;
-	if (*low > s) {
-	  *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,
-							      *low, (const UChar** )low_prev);
-	  if (low_prev && IS_NULL(*low_prev))
-	    *low_prev = onigenc_get_prev_char_head(reg->enc,
-						   (pprev ? pprev : s), *low);
+	if (p - str < reg->dmax) {
+	  *low = (UChar* )str;
+	  if (low_prev)
+	    *low_prev = onigenc_get_prev_char_head(reg->enc, str, *low);
 	}
 	else {
-	  if (low_prev)
-	    *low_prev = onigenc_get_prev_char_head(reg->enc,
-					       (pprev ? pprev : str), *low);
+	  *low = p - reg->dmax;
+	  if (*low > s) {
+	    *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,
+								*low, (const UChar** )low_prev);
+	    if (low_prev && IS_NULL(*low_prev))
+	      *low_prev = onigenc_get_prev_char_head(reg->enc,
+						     (pprev ? pprev : s), *low);
+	  }
+	  else {
+	    if (low_prev)
+	      *low_prev = onigenc_get_prev_char_head(reg->enc,
+						     (pprev ? pprev : str), *low);
+	  }
 	}
       }
     }