X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Futils.c;h=5420490a76a40f1d66d504f46e545aaebba56f78;hb=8a5422a0a990db34189f2c159820e36e0ace7dd1;hp=b0e5b63e34400c3f0e2e2df57b58fcdf0f875f32;hpb=15de0c603a7e9befe657e6856df286a3d173ad7b;p=lttng-tools.git diff --git a/src/common/utils.c b/src/common/utils.c index b0e5b63e3..5420490a7 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -300,7 +300,7 @@ int expand_double_slashes_dot_and_dotdot(char *path) * Copy the current token which is neither a '.' nor a '..'. */ path[expanded_path_len++] = '/'; - memcpy(&path[expanded_path_len], curr_char, curr_token_len); + memmove(&path[expanded_path_len], curr_char, curr_token_len); expanded_path_len += curr_token_len; } @@ -379,6 +379,9 @@ char *_utils_expand_path(const char *path, bool keep_symlink) /* Resolve partially our path */ absolute_path = utils_partial_realpath(absolute_path, absolute_path, LTTNG_PATH_MAX); + if (!absolute_path) { + goto error; + } } ret = expand_double_slashes_dot_and_dotdot(absolute_path); @@ -544,6 +547,7 @@ void utils_close_pipe(int *src) if (ret) { PERROR("close pipe"); } + src[i] = -1; } } @@ -739,7 +743,8 @@ int utils_stream_file_path(const char *path_name, const char *file_name, char count_str[MAX_INT_DEC_LEN(count) + 1] = {}; const char *path_separator; - if (path_name && path_name[strlen(path_name) - 1] == '/') { + if (path_name && (path_name[0] == '\0' || + path_name[strlen(path_name) - 1] == '/')) { path_separator = ""; } else { path_separator = "/";