if (r < 0)
return r;
- free(c->label);
- c->label = strndup(p, sz);
- if (!c->label)
- return -ENOMEM;
+ r = free_and_strndup(&c->label, p, sz);
+ if (r < 0)
+ return r;
c->mask |= SD_BUS_CREDS_SELINUX_CONTEXT;
* cgroup, let's return the "/" in the public APIs instead, as
* that's easier and less ambiguous for people to grok. */
if (isempty(c)) {
- free(c);
- c = strdup("/");
- if (!c)
- return -ENOMEM;
+ r = free_and_strdup(&c, "/");
+ if (r < 0)
+ return r;
}
if (r < 0)
return r;
if (r == 0 || !ifname_valid(b)) {
- free(b);
- b = strdup(a);
- if (!b)
- return -ENOMEM;
+ r = free_and_strdup(&b, a);
+ if (r < 0)
+ return r;
}
if (p)