]> granicus.if.org Git - onig/commitdiff
fix infinite recursive call by zero repetition
authorK.Kosako <kosako@sofnec.co.jp>
Thu, 3 Aug 2017 03:53:46 +0000 (12:53 +0900)
committerK.Kosako <kosako@sofnec.co.jp>
Thu, 3 Aug 2017 03:53:46 +0000 (12:53 +0900)
src/regcomp.c

index 45dc3b86e2ff3b0086376172d985eb16ac17a88c..47023cb582ed50b9bdaedabb5c3eff93441b561f 100644 (file)
@@ -2370,9 +2370,14 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
     {
       QuantNode* qn = QUANT_(node);
       if (qn->lower == qn->upper) {
-        r = get_char_length_tree1(NODE_BODY(node), reg, &tlen, level);
-        if (r == 0)
-          *len = distance_multiply(tlen, qn->lower);
+        if (qn->upper == 0) {
+          *len = 0;
+        }
+        else {
+          r = get_char_length_tree1(NODE_BODY(node), reg, &tlen, level);
+          if (r == 0)
+            *len = distance_multiply(tlen, qn->lower);
+        }
       }
       else
         r = GET_CHAR_LEN_VARLEN;