Fix: utils.c: check str*dup OOM
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 26 Nov 2014 17:36:03 +0000 (12:36 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 27 Nov 2014 20:59:40 +0000 (15:59 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/utils.c

index 0d60dc251c2e897969b604b79e57ee37b53a17bf..95e21e0be1f40e30504912917cea99eb38d0e1aa 100644 (file)
@@ -89,6 +89,10 @@ char *utils_partial_realpath(const char *path, char *resolved_path, size_t size)
 
                /* Cut the part we will be trying to resolve */
                cut_path = strndup(path, next - path);
+               if (cut_path == NULL) {
+                       PERROR("strndup");
+                       goto error;
+               }
 
                /* Try to resolve this part */
                try_path = realpath((char *)cut_path, NULL);
@@ -142,6 +146,10 @@ char *utils_partial_realpath(const char *path, char *resolved_path, size_t size)
                 * path are pointers for the same memory space
                 */
                cut_path = strdup(prev);
+               if (cut_path == NULL) {
+                       PERROR("strdup");
+                       goto error;
+               }
 
                /* Concatenate the strings */
                snprintf(resolved_path, size, "%s%s", try_path_prev, cut_path);
@@ -215,7 +223,10 @@ char *utils_expand_path(const char *path)
 
                /* We prepare the start_path not containing it */
                start_path = strndup(absolute_path, next - absolute_path);
-
+               if (!start_path) {
+                       PERROR("strndup");
+                       goto error;
+               }
                /* And we concatenate it with the part after this string */
                snprintf(absolute_path, PATH_MAX, "%s%s", start_path, next + 2);
 
@@ -232,6 +243,10 @@ char *utils_expand_path(const char *path)
 
                /* Then we prepare the start_path not containing it */
                start_path = strndup(absolute_path, previous - absolute_path);
+               if (!start_path) {
+                       PERROR("strndup");
+                       goto error;
+               }
 
                /* And we concatenate it with the part after the '/../' */
                snprintf(absolute_path, PATH_MAX, "%s%s", start_path, next + 4);
This page took 0.027776 seconds and 4 git commands to generate.