X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Futils.c;h=f1a717a8b5092156679025f2ea9f0b461f737784;hb=6dcd74cf9c4cce229b1c205ca05d8efcf4c4bceb;hp=11018739be9ad9c7e6a83340a2434fdc2fc654c1;hpb=d1f721c52e3810dcb38429cb3beec9f80043aa57;p=lttng-tools.git diff --git a/src/common/utils.c b/src/common/utils.c index 11018739b..f1a717a8b 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "utils.h" #include "defaults.h" @@ -81,6 +82,8 @@ char *utils_partial_realpath(const char *path, char *resolved_path, size_t size) /* Resolve the canonical path of the first part of the path */ while (try_path != NULL && next != end) { + char *try_path_buf = NULL; + /* * If there is not any '/' left, we want to try with * the full path @@ -97,9 +100,16 @@ char *utils_partial_realpath(const char *path, char *resolved_path, size_t size) goto error; } + try_path_buf = zmalloc(LTTNG_PATH_MAX); + if (!try_path_buf) { + PERROR("zmalloc"); + goto error; + } + /* Try to resolve this part */ - try_path = realpath((char *)cut_path, NULL); + try_path = realpath((char *) cut_path, try_path_buf); if (try_path == NULL) { + free(try_path_buf); /* * There was an error, we just want to be assured it * is linked to an unexistent directory, if it's another @@ -116,6 +126,7 @@ char *utils_partial_realpath(const char *path, char *resolved_path, size_t size) } } else { /* Save the place we are before trying the next step */ + try_path_buf = NULL; free(try_path_prev); try_path_prev = try_path; prev = next;