X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-creds.c;h=9d90c49c1ee6ceae04a810e0afdd81188c92e9cc;hb=9a636ed8096fa44927f182ac3eaef4104866d4a9;hp=54dcd41b14b6d8f60805ec2aa3aa396a6c2b4e24;hpb=49b832c5b810f4d8bb59249ff25472fd670503dc;p=elogind.git diff --git a/src/libsystemd-bus/bus-creds.c b/src/libsystemd-bus/bus-creds.c index 54dcd41b1..9d90c49c1 100644 --- a/src/libsystemd-bus/bus-creds.c +++ b/src/libsystemd-bus/bus-creds.c @@ -50,7 +50,7 @@ void bus_creds_done(sd_bus_creds *c) { free(c->slice); strv_free(c->cmdline_array); - strv_free(c->well_known_names_array); + strv_free(c->well_known_names); } _public_ sd_bus_creds *sd_bus_creds_ref(sd_bus_creds *c) { @@ -72,7 +72,9 @@ _public_ sd_bus_creds *sd_bus_creds_ref(sd_bus_creds *c) { } _public_ sd_bus_creds *sd_bus_creds_unref(sd_bus_creds *c) { - assert_return(c, NULL); + + if (!c) + return NULL; if (c->allocated) { assert(c->n_ref > 0); @@ -89,7 +91,6 @@ _public_ sd_bus_creds *sd_bus_creds_unref(sd_bus_creds *c) { free(c->capability); free(c->label); free(c->unique_name); - free(c->well_known_names); free(c); } } else { @@ -126,7 +127,7 @@ _public_ int sd_bus_creds_new_from_pid(pid_t pid, uint64_t mask, sd_bus_creds ** int r; assert_return(pid >= 0, -EINVAL); - assert_return(mask <= _SD_BUS_CREDS_MAX, -ENOTSUP); + assert_return(mask <= _SD_BUS_CREDS_ALL, -ENOTSUP); assert_return(ret, -EINVAL); if (pid == 0) @@ -385,15 +386,7 @@ _public_ int sd_bus_creds_get_well_known_names(sd_bus_creds *c, char ***well_kno assert_return(well_known_names, -EINVAL); assert_return(c->mask & SD_BUS_CREDS_WELL_KNOWN_NAMES, -ENODATA); - assert(c->well_known_names); - - if (!c->well_known_names_array) { - c->well_known_names_array = strv_parse_nulstr(c->well_known_names, c->well_known_names_size); - if (!c->well_known_names_array) - return -ENOMEM; - } - - *well_known_names = c->well_known_names_array; + *well_known_names = c->well_known_names; return 0; } @@ -804,11 +797,9 @@ int bus_creds_extend_by_pid(sd_bus_creds *c, uint64_t mask, sd_bus_creds **ret) } if (c->mask & mask & SD_BUS_CREDS_WELL_KNOWN_NAMES) { - n->well_known_names = memdup(c->well_known_names, c->well_known_names_size); + n->well_known_names = strv_copy(c->well_known_names); if (!n->well_known_names) return -ENOMEM; - - n->well_known_names_size = c->well_known_names_size; } /* Get more data */