X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Futils.c;h=2417a7d255ffb1445e12ec9e24ba2b5a29900e1d;hp=11018739be9ad9c7e6a83340a2434fdc2fc654c1;hb=d7c23421dddd4dcfbdfd329299816fa7d020eeb8;hpb=d1f721c52e3810dcb38429cb3beec9f80043aa57 diff --git a/src/common/utils.c b/src/common/utils.c index 11018739b..2417a7d25 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;