regex: fix storage-exhaustion error
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 6 Sep 2018 06:57:08 +0000 (23:57 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 16 Dec 2018 15:08:29 +0000 (07:08 -0800)
[BZ #18040]
* posix/regexec.c (get_subexp):
Do not continue if storage is exhausted.

ChangeLog
posix/regexec.c

index 2fef13e..e0e7a74 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2018-12-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       regex: fix storage-exhaustion error
+       [BZ #18040]
+       * posix/regexec.c (get_subexp):
+       Do not continue if storage is exhausted.
+
 2018-12-15  Assaf Gordon  <assafgordon@gmail.com>
 
        regex: fix heap-use-after-free error
index a29e8ad..ecb430d 100644 (file)
@@ -2786,6 +2786,8 @@ get_subexp (re_match_context_t *mctx, Idx bkref_node, Idx bkref_str_idx)
          buf = (const char *) re_string_get_buffer (&mctx->input);
          if (err == REG_NOMATCH)
            continue;
+         if (__glibc_unlikely (err != REG_NOERROR))
+           return err;
        }
     }
   return REG_NOERROR;