Version: 1
-Previous: ae5c3b8ff33dccf14c14d8cd10937814d08bbacc
-Head: 897f45e8453eab4bfeed1549a718a5149c711600
+Previous: 30e17680cc35e44f297ff53cff9f21e7826c6615
+Head: 1ab73cbe99eadc20eb6b8fdd03dbd8be5a83a0df
Applied:
malloc-err: 897f45e8453eab4bfeed1549a718a5149c711600
+ refresh-temp: 1ab73cbe99eadc20eb6b8fdd03dbd8be5a83a0df
Unapplied:
af_ib: 414c0cd9299eadb9748ce805155e267ba6bff585
name2ip: 8e00708e882239292492e13aa51c82042255933c
--- /dev/null
+Bottom: 42e4729a57fa30e42770d8787e4b6b02c7bf2204
+Top: ed6a134db24d206a944a53a1ebb514d04d70b176
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2011-11-28 12:21:28 -0800
+
+Refresh of malloc-err
+
+---
+
+diff --git a/src/parse.c b/src/parse.c
+index d1c820f..6ab6041 100644
+--- a/src/parse.c
++++ b/src/parse.c
+@@ -71,14 +71,15 @@ static char *expand(char *basename, char *args, int *str_cnt, int *str_size)
+
+ char **parse(char *args, int *count)
+ {
+- char **ptrs;
++ char **ptrs = NULL;
+ char *str_buf, *cpy, *token, *next;
+ int cnt = 0, str_size = 0;
+ int i;
+
+ /* make a copy that strtok can modify */
+- cpy = malloc(strlen(args) + 1);
+- strcpy(cpy, args);
++ cpy = strdup(args);
++ if (!cpy)
++ return NULL;
+
+ if (args[0] == '[') {
+ cpy[0] = '\0';
+@@ -92,6 +93,8 @@ char **parse(char *args, int *count)
+ if (!next) {
+ str_size = strlen(token) + 1;
+ str_buf = malloc(str_size);
++ if (!str_buf)
++ goto out_cpy;
+ strcpy(str_buf, token);
+ cnt = 1;
+ } else {
+@@ -99,6 +102,9 @@ char **parse(char *args, int *count)
+ }
+
+ ptrs = malloc((sizeof str_buf * (cnt + 1)) + str_size);
++ if (!ptrs)
++ goto out_str_buf;
++
+ memcpy(&ptrs[cnt + 1], str_buf, str_size);
+
+ ptrs[0] = (char*) &ptrs[cnt + 1];
+@@ -106,10 +112,14 @@ char **parse(char *args, int *count)
+ ptrs[i] = index(ptrs[i - 1], 0) + 1;
+ ptrs[i] = NULL;
+
+- free(cpy);
+- free(str_buf);
+-
+ if (count)
+ *count = cnt;
++
++out_str_buf:
++ free(str_buf);
++
++out_cpy:
++ free(cpy);
++
+ return ptrs;
+ }