Fix: getgrnam is not MT-Safe, use getgrnam_r
[lttng-tools.git] / src / lib / lttng-ctl / lttng-ctl.c
index a1e10f25e82176393f92206c2779d09355c063e6..561b0bcfba4e39a76eee320968985d8f09a18ef5 100644 (file)
@@ -208,15 +208,13 @@ end:
 LTTNG_HIDDEN
 int lttng_check_tracing_group(void)
 {
-       struct group *grp_tracing;      /* no free(). See getgrnam(3) */
-       gid_t *grp_list;
+       gid_t *grp_list, tracing_gid;
        int grp_list_size, grp_id, i;
        int ret = -1;
        const char *grp_name = tracing_group;
 
        /* Get GID of group 'tracing' */
-       grp_tracing = getgrnam(grp_name);
-       if (!grp_tracing) {
+       if (utils_get_group_id(grp_name, false, &tracing_gid)) {
                /* If grp_tracing is NULL, the group does not exist. */
                goto end;
        }
@@ -241,7 +239,7 @@ int lttng_check_tracing_group(void)
        }
 
        for (i = 0; i < grp_list_size; i++) {
-               if (grp_list[i] == grp_tracing->gr_gid) {
+               if (grp_list[i] == tracing_gid) {
                        ret = 1;
                        break;
                }
@@ -2558,7 +2556,7 @@ int lttng_list_tracker_pids(struct lttng_handle *handle,
        int enabled = 1;
        struct lttcomm_session_msg lsm;
        size_t nr_pids;
-       int32_t *pids;
+       int32_t *pids = NULL;
 
        if (handle == NULL) {
                return -LTTNG_ERR_INVALID;
@@ -2575,6 +2573,9 @@ int lttng_list_tracker_pids(struct lttng_handle *handle,
                return ret;
        }
        nr_pids = ret / sizeof(int32_t);
+       if (nr_pids > 0 && !pids) {
+               return -LTTNG_ERR_UNK;
+       }
        if (nr_pids == 1 && pids[0] == -1) {
                free(pids);
                pids = NULL;
This page took 0.032393 seconds and 4 git commands to generate.