X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fuserspace-probe.c;h=e85c3c56fc67eea6163b5442694a1855332892ad;hb=166fc58650170d8213cd7d43c68d9a6601336dd0;hp=508c9e8d4480a8a99216e7a3792a6555dd534d3f;hpb=ab5be9fa2eb5ba9600a82cd18fd3cfcbac69169a;p=lttng-tools.git diff --git a/src/common/userspace-probe.c b/src/common/userspace-probe.c index 508c9e8d4..e85c3c56f 100644 --- a/src/common/userspace-probe.c +++ b/src/common/userspace-probe.c @@ -413,17 +413,20 @@ lttng_userspace_probe_location_function_copy( goto error; } - /* Duplicate the binary fd */ + /* + * Duplicate the binary fd if possible. The binary fd can be -1 on + * listing + */ fd = lttng_userspace_probe_location_function_get_binary_fd(location); - if (fd == -1) { - ERR("Error getting file descriptor to binary"); - goto error; - } - - new_fd = dup(fd); - if (new_fd == -1) { - PERROR("Error duplicating file descriptor to binary"); - goto error; + if (fd > -1) { + new_fd = dup(fd); + if (new_fd == -1) { + PERROR("Error duplicating file descriptor to binary"); + goto error; + } + } else { + /* The original fd is not set. */ + new_fd = -1; } /* @@ -509,15 +512,15 @@ lttng_userspace_probe_location_tracepoint_copy( /* Duplicate the binary fd */ fd = lttng_userspace_probe_location_tracepoint_get_binary_fd(location); - if (fd == -1) { - ERR("Error getting file descriptor to binary"); - goto error; - } - - new_fd = dup(fd); - if (new_fd == -1) { - PERROR("Error duplicating file descriptor to binary"); - goto error; + if (fd > -1) { + new_fd = dup(fd); + if (new_fd == -1) { + PERROR("Error duplicating file descriptor to binary"); + goto error; + } + } else { + /* The original fd is not set. */ + new_fd = -1; } /* @@ -1096,12 +1099,14 @@ int lttng_userspace_probe_location_function_create_from_buffer( function_name = lttng_strndup(function_name_src, LTTNG_SYMBOL_NAME_LEN); if (!function_name) { PERROR("lttng_strndup"); + ret = -LTTNG_ERR_NOMEM; goto end; } binary_path = lttng_strndup(binary_path_src, LTTNG_PATH_MAX); if (!binary_path) { PERROR("lttng_strndup"); + ret = -LTTNG_ERR_NOMEM; goto end; } @@ -1169,18 +1174,21 @@ int lttng_userspace_probe_location_tracepoint_create_from_buffer( probe_name = lttng_strndup(probe_name_src, LTTNG_SYMBOL_NAME_LEN); if (!probe_name) { - PERROR("lttng_strndup"); + PERROR("Failed to allocate probe name"); + ret = -LTTNG_ERR_INVALID; goto end; } provider_name = lttng_strndup(provider_name_src, LTTNG_SYMBOL_NAME_LEN); if (!provider_name) { - PERROR("lttng_strndup"); + PERROR("Failed to allocate provider name"); + ret = -LTTNG_ERR_INVALID; goto end; } - binary_path = lttng_strndup(binary_path_src, LTTNG_SYMBOL_NAME_LEN); + binary_path = lttng_strndup(binary_path_src, LTTNG_PATH_MAX); if (!binary_path) { - PERROR("lttng_strndup"); + PERROR("Failed to allocate binary path"); + ret = -LTTNG_ERR_INVALID; goto end; }