X-Git-Url: http://git.lttng.org/?p=ust.git;a=blobdiff_plain;f=libustcomm%2Fustcomm.c;fp=libustcomm%2Fustcomm.c;h=dce1e521c5b5c83714d439a00edf07ccb73253dc;hp=43f4289a58662cca985fcbc68d26b2f7c49bd7ee;hb=dbd75de7b2c05c98d6171bc531a1ecb23fb7e80d;hpb=9508e4d5ffbb4ba602d15de0fa7843a004b02f02 diff --git a/libustcomm/ustcomm.c b/libustcomm/ustcomm.c index 43f4289..dce1e52 100644 --- a/libustcomm/ustcomm.c +++ b/libustcomm/ustcomm.c @@ -533,6 +533,21 @@ close_sock: return -1; } +/* Returns the current users socket directory, must be freed */ +char *ustcomm_user_sock_dir(void) +{ + int result; + char *sock_dir = NULL; + + result = asprintf(&sock_dir, "%s%s", USER_SOCK_DIR, + cuserid(NULL)); + if (result < 0) { + ERR("string overflow allocating directory name"); + return NULL; + } + + return sock_dir; +} /* Open a connection to a traceable app. * @@ -545,21 +560,30 @@ int ustcomm_connect_app(pid_t pid, int *app_fd) { int result; int retval = 0; - char *name; + char *dir_name, *sock_name; + + dir_name = ustcomm_user_sock_dir(); + if (!dir_name) + return -ENOMEM; - result = asprintf(&name, "%s/%d", SOCK_DIR, pid); + result = asprintf(&sock_name, "%s/%d", dir_name, pid); if (result < 0) { ERR("failed to allocate socket name"); - return -1; + retval = -1; + goto free_dir_name; } - result = ustcomm_connect_path(name, app_fd); + result = ustcomm_connect_path(sock_name, app_fd); if (result < 0) { ERR("failed to connect to app"); retval = -1; + goto free_sock_name; } - free(name); +free_sock_name: + free(sock_name); +free_dir_name: + free(dir_name); return retval; }