]> git.saurik.com Git - apple/libc.git/commitdiff
Libc-1044.40.1.tar.gz os-x-10105 v1044.40.1
authorApple <opensource@apple.com>
Tue, 18 Aug 2015 17:17:27 +0000 (17:17 +0000)
committerApple <opensource@apple.com>
Tue, 18 Aug 2015 17:17:27 +0000 (17:17 +0000)
regex/TRE/lib/regexec.c
regex/TRE/lib/tre-match-backtrack.c
regex/TRE/lib/tre-match-parallel.c
regex/TRE/lib/tre-parse.c

index 89229feef721f1c5c9e97e214486ced0ccbaef99..6823f72e22ee9900513e1793d7dc3464a55adec3 100644 (file)
 #include <config.h>
 #endif /* HAVE_CONFIG_H */
 
+/* Unset TRE_USE_ALLOCA to avoid using the stack to hold all the state
+   info while running */
+#undef TRE_USE_ALLOCA
+
 #ifdef TRE_USE_ALLOCA
 /* AIX requires this to be the first thing in the file.         */
 #ifndef __GNUC__
index 734f088b01157b24b3022708e59c2c26cfbaf794..a03d1c68b52ac13e9a6c21e7954486561e0419e1 100644 (file)
@@ -274,7 +274,7 @@ tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
 
   int num_tags = tnfa->num_tags;
   int touch = 1;
-  char *buf;
+  char *buf = NULL;
   int tbytes;
 
 #ifdef TRE_MBSTATE
index 67726c429d5ee3f0be7c96977af037bfb1d1e163..c6ce76f271b6e09d9948e35552df142dd7fd652a 100644 (file)
@@ -143,7 +143,7 @@ tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, int len,
 #endif /* TRE_DEBUG */
   tre_tag_t *tmp_tags = NULL;
   tre_tag_t *tmp_iptr;
-  int tbytes;
+  size_t tbytes;
   int touch = 1;
 
 #ifdef TRE_MBSTATE
@@ -162,7 +162,7 @@ tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, int len,
      everything in a single large block from the stack frame using alloca()
      or with malloc() if alloca is unavailable. */
   {
-    int rbytes, pbytes, total_bytes;
+    size_t rbytes, pbytes, total_bytes;
     char *tmp_buf;
     /* Compute the length of the block we need. */
     tbytes = sizeof(*tmp_tags) * num_tags;
@@ -177,11 +177,11 @@ tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, int len,
 #ifdef TRE_USE_ALLOCA
     buf = alloca(total_bytes);
 #else /* !TRE_USE_ALLOCA */
-    buf = xmalloc((unsigned)total_bytes);
+    buf = xmalloc(total_bytes);
 #endif /* !TRE_USE_ALLOCA */
     if (buf == NULL)
       return REG_ESPACE;
-    memset(buf, 0, (size_t)total_bytes);
+    memset(buf, 0, total_bytes);
 
     /* Get the various pointers within tmp_buf (properly aligned). */
     tmp_tags = (void *)buf;
index ad09c2620dcf1c3b150aafb8f5559a160d593f63..05193af2d7431749560baf8febd69d9e0ca0f977 100644 (file)
@@ -717,7 +717,7 @@ static const char *bracket_match_type_str[] = {
 static reg_errcode_t
 tre_parse_bracket(tre_parse_ctx_t *ctx, tre_ast_node_t **result)
 {
-  tre_ast_node_t *node;
+  tre_ast_node_t *node = NULL;
   reg_errcode_t status = REG_OK;
   tre_bracket_match_list_t *items;
   int max_i = 32;
@@ -2016,6 +2016,8 @@ tre_parse(tre_parse_ctx_t *ctx)
                        ctx->re++;
                        while (ctx->re_end - ctx->re >= 0)
                          {
+                           if (i == sizeof(tmp))
+                               return REG_EBRACE;
                            if (ctx->re[0] == CHAR_RBRACE)
                              break;
                            if (tre_isxdigit_l(ctx->re[0], ctx->loc))