]> granicus.if.org Git - onig/commitdiff
fix #87: Read unknown address in onig_error_code_to_str()
authorK.Kosako <kosako@sofnec.co.jp>
Tue, 10 Apr 2018 00:08:33 +0000 (09:08 +0900)
committerK.Kosako <kosako@sofnec.co.jp>
Tue, 10 Apr 2018 00:08:33 +0000 (09:08 +0900)
src/regparse.c

index 6e95a1430034299c82217c1c25e579ebaf8c6a9f..f96180f8b09e11380633a9fcb381705443227121 100644 (file)
@@ -5341,8 +5341,11 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
           if (num_type != IS_NOT_NUM) {
             if (num_type == IS_REL_NUM) {
               gnum = backref_rel_to_abs(gnum, env);
-              if (gnum < 0)
+              if (gnum < 0) {
+                onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE,
+                                               prev, name_end);
                 return ONIGERR_UNDEFINED_GROUP_REFERENCE;
+              }
             }
             tok->u.call.by_number = 1;
             tok->u.call.gnum      = gnum;
@@ -5563,8 +5566,11 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
                 else {
                   if (num_type == IS_REL_NUM) {
                     gnum = backref_rel_to_abs(gnum, env);
-                    if (gnum < 0)
+                    if (gnum < 0) {
+                      onig_scan_env_set_error_string(env,
+                             ONIGERR_UNDEFINED_NAME_REFERENCE, name, name_end);
                       return ONIGERR_UNDEFINED_GROUP_REFERENCE;
+                    }
                   }
                   tok->u.call.by_number = 1;
                   tok->u.call.gnum      = gnum;