lttng-ctl: fix: lttng_data_pending confuses communication status
[lttng-tools.git] / src / lib / lttng-ctl / lttng-ctl.c
index f6fadcb6adaadb16ccb21cb2fb0ad752581b1050..79b885467e27d4f258e44823231ae3da7a56fd2c 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;
                }
@@ -2449,6 +2447,10 @@ int lttng_data_pending(const char *session_name)
                /* Unexpected payload size */
                ret = -LTTNG_ERR_INVALID;
                goto end;
+       } else if (!pending) {
+               /* Internal error. */
+               ret = -LTTNG_ERR_UNK;
+               goto end;
        }
 
        ret = (int) *pending;
@@ -2575,6 +2577,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.025383 seconds and 4 git commands to generate.