various: use strdup_to() in various obvious cases

strdup_to() returns 0 on success and here we convert obvious blocks
which either return -ENOMEM or 0.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2024-03-20 15:13:44 +01:00
parent 7e850da3d6
commit 454318d3e8
17 changed files with 31 additions and 124 deletions
+1 -6
View File
@@ -741,12 +741,7 @@ int chase_extract_filename(const char *path, const char *root, char **ret) {
return r;
}
char *fname = strdup(".");
if (!fname)
return -ENOMEM;
*ret = fname;
return 0;
return strdup_to(ret, ".");
}
int chase_and_open(const char *path, const char *root, ChaseFlags chase_flags, int open_flags, char **ret_path) {
+4 -7
View File
@@ -58,21 +58,18 @@ int device_path_make_major_minor(mode_t mode, dev_t devnum, char **ret) {
}
int device_path_make_inaccessible(mode_t mode, char **ret) {
char *s;
const char *s;
assert(ret);
if (S_ISCHR(mode))
s = strdup("/run/systemd/inaccessible/chr");
s = "/run/systemd/inaccessible/chr";
else if (S_ISBLK(mode))
s = strdup("/run/systemd/inaccessible/blk");
s = "/run/systemd/inaccessible/blk";
else
return -ENODEV;
if (!s)
return -ENOMEM;
*ret = s;
return 0;
return strdup_to(ret, s);
}
int device_path_make_canonical(mode_t mode, dev_t devnum, char **ret) {
+2 -7
View File
@@ -25,7 +25,7 @@ int format_ifname_full(int ifindex, FormatIfnameFlag flag, char buf[static IF_NA
}
int format_ifname_full_alloc(int ifindex, FormatIfnameFlag flag, char **ret) {
char buf[IF_NAMESIZE], *copy;
char buf[IF_NAMESIZE];
int r;
assert(ret);
@@ -34,12 +34,7 @@ int format_ifname_full_alloc(int ifindex, FormatIfnameFlag flag, char **ret) {
if (r < 0)
return r;
copy = strdup(buf);
if (!copy)
return -ENOMEM;
*ret = copy;
return 0;
return strdup_to(ret, buf);
}
char *format_bytes_full(char *buf, size_t l, uint64_t t, FormatBytesFlag flag) {
+2 -7
View File
@@ -1094,7 +1094,6 @@ int path_extract_filename(const char *path, char **ret) {
}
int path_extract_directory(const char *path, char **ret) {
_cleanup_free_ char *a = NULL;
const char *c, *next = NULL;
int r;
@@ -1118,14 +1117,10 @@ int path_extract_directory(const char *path, char **ret) {
if (*path != '/') /* filename only */
return -EDESTADDRREQ;
a = strdup("/");
if (!a)
return -ENOMEM;
*ret = TAKE_PTR(a);
return 0;
return strdup_to(ret, "/");
}
a = strndup(path, next - path);
_cleanup_free_ char *a = strndup(path, next - path);
if (!a)
return -ENOMEM;
+5 -18
View File
@@ -697,18 +697,10 @@ int vtnr_from_tty(const char *tty) {
tty = active;
}
if (tty == active)
*ret = TAKE_PTR(active);
else {
char *tmp;
tmp = strdup(tty);
if (!tmp)
return -ENOMEM;
*ret = tmp;
}
if (tty != active)
return strdup_to(ret, tty);
*ret = TAKE_PTR(active);
return 0;
}
@@ -988,7 +980,7 @@ bool on_tty(void) {
}
int getttyname_malloc(int fd, char **ret) {
char path[PATH_MAX], *c; /* PATH_MAX is counted *with* the trailing NUL byte */
char path[PATH_MAX]; /* PATH_MAX is counted *with* the trailing NUL byte */
int r;
assert(fd >= 0);
@@ -1001,12 +993,7 @@ int getttyname_malloc(int fd, char **ret) {
if (r > 0)
return -r;
c = strdup(skip_dev_prefix(path));
if (!c)
return -ENOMEM;
*ret = c;
return 0;
return strdup_to(ret, skip_dev_prefix(path));
}
int getttyname_harder(int fd, char **ret) {
+1 -6
View File
@@ -793,12 +793,7 @@ int unit_name_mangle_with_suffix(
return 1;
good:
s = strdup(name);
if (!s)
return -ENOMEM;
*ret = TAKE_PTR(s);
return 0;
return strdup_to(ret, name);
}
int slice_build_parent_slice(const char *slice, char **ret) {
+1 -7
View File
@@ -3145,7 +3145,6 @@ int home_schedule_operation(Home *h, Operation *o, sd_bus_error *error) {
static int home_get_image_path_seat(Home *h, char **ret) {
_cleanup_(sd_device_unrefp) sd_device *d = NULL;
_cleanup_free_ char *c = NULL;
const char *ip, *seat;
struct stat st;
int r;
@@ -3178,12 +3177,7 @@ static int home_get_image_path_seat(Home *h, char **ret) {
else if (r < 0)
return r;
c = strdup(seat);
if (!c)
return -ENOMEM;
*ret = TAKE_PTR(c);
return 0;
return strdup_to(ret, seat);
}
int home_auto_login(Home *h, char ***ret_seats) {
+1 -5
View File
@@ -158,11 +158,7 @@ static int process_locale_list_item(
if (new_locale[p])
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Locale variable %s set twice, refusing.", name);
new_locale[p] = strdup(e);
if (!new_locale[p])
return -ENOMEM;
return 0;
return strdup_to(&new_locale[p], e);
}
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Locale assignment %s not valid, refusing.", assignment);
+1 -7
View File
@@ -1028,7 +1028,6 @@ static int get_bus_path_by_id(
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_free_ char *p = NULL;
const char *path;
int r;
@@ -1047,12 +1046,7 @@ static int get_bus_path_by_id(
if (r < 0)
return bus_log_parse_error(r);
p = strdup(path);
if (!p)
return log_oom();
*ret = TAKE_PTR(p);
return 0;
return strdup_to(ret, path);
}
static int show_session(int argc, char *argv[], void *userdata) {
+1 -5
View File
@@ -314,11 +314,7 @@ static int session_device_verify(SessionDevice *sd) {
if (sd->device->seat != sd->session->seat)
return -EPERM;
sd->node = strdup(node);
if (!sd->node)
return -ENOMEM;
return 0;
return strdup_to(&sd->node, node);
}
int session_device_new(Session *s, dev_t dev, bool open_device, SessionDevice **ret) {
+1 -7
View File
@@ -140,16 +140,10 @@ static int dnssd_service_load(Manager *manager, const char *filename) {
static int specifier_dnssd_hostname(char specifier, const void *data, const char *root, const void *userdata, char **ret) {
const Manager *m = ASSERT_PTR(userdata);
char *n;
assert(m->llmnr_hostname);
n = strdup(m->llmnr_hostname);
if (!n)
return -ENOMEM;
*ret = n;
return 0;
return strdup_to(ret, m->llmnr_hostname);
}
int dnssd_render_instance_name(Manager *m, DnssdService *s, char **ret) {
+1 -7
View File
@@ -182,7 +182,6 @@ int ethtool_get_driver(int *ethtool_fd, const char *ifname, char **ret) {
struct ifreq ifr = {
.ifr_data = (void*) &ecmd,
};
char *d;
int r;
assert(ethtool_fd);
@@ -201,12 +200,7 @@ int ethtool_get_driver(int *ethtool_fd, const char *ifname, char **ret) {
if (isempty(ecmd.driver))
return -ENODATA;
d = strdup(ecmd.driver);
if (!d)
return -ENOMEM;
*ret = d;
return 0;
return strdup_to(ret, ecmd.driver);
}
int ethtool_get_link_info(
+3 -9
View File
@@ -3042,17 +3042,16 @@ int unit_file_set_default(
int unit_file_get_default(
RuntimeScope scope,
const char *root_dir,
char **name) {
char **ret) {
_cleanup_(lookup_paths_done) LookupPaths lp = {};
_cleanup_(install_context_done) InstallContext ctx = { .scope = scope };
InstallInfo *info;
char *n;
int r;
assert(scope >= 0);
assert(scope < _RUNTIME_SCOPE_MAX);
assert(name);
assert(ret);
r = lookup_paths_init(&lp, scope, 0, root_dir);
if (r < 0)
@@ -3063,12 +3062,7 @@ int unit_file_get_default(
if (r < 0)
return r;
n = strdup(info->name);
if (!n)
return -ENOMEM;
*name = n;
return 0;
return strdup_to(ret, info->name);
}
int unit_file_lookup_state(
+1 -1
View File
@@ -175,7 +175,7 @@ int unit_file_set_default(
int unit_file_get_default(
RuntimeScope scope,
const char *root_dir,
char **name);
char **ret);
int unit_file_add_dependency(
RuntimeScope scope,
UnitFileFlags flags,
+2 -7
View File
@@ -140,7 +140,7 @@ static char* systemd_crypt_ra(const char *phrase, const char *setting, void **da
int hash_password_full(const char *password, void **cd_data, int *cd_size, char **ret) {
_cleanup_free_ char *salt = NULL;
_cleanup_(erase_and_freep) void *_cd_data = NULL;
char *p;
const char *p;
int r, _cd_size = 0;
assert(!!cd_data == !!cd_size);
@@ -155,12 +155,7 @@ int hash_password_full(const char *password, void **cd_data, int *cd_size, char
return log_debug_errno(errno_or_else(SYNTHETIC_ERRNO(EINVAL)),
CRYPT_RA_NAME "() failed: %m");
p = strdup(p);
if (!p)
return -ENOMEM;
*ret = p;
return 0;
return strdup_to(ret, p);
}
bool looks_like_hashed_password(const char *s) {
+2 -8
View File
@@ -32,14 +32,8 @@ int net_get_type_string(sd_device *device, uint16_t iftype, char **ret) {
if (device &&
sd_device_get_devtype(device, &t) >= 0 &&
!isempty(t)) {
p = strdup(t);
if (!p)
return -ENOMEM;
*ret = p;
return 0;
}
!isempty(t))
return strdup_to(ret, t);
t = arphrd_to_name(iftype);
if (!t)
+2 -10
View File
@@ -141,16 +141,8 @@ int terminal_urlify_path(const char *path, const char *text, char **ret) {
if (isempty(text))
text = path;
if (!urlify_enabled()) {
char *n;
n = strdup(text);
if (!n)
return -ENOMEM;
*ret = n;
return 0;
}
if (!urlify_enabled())
return strdup_to(ret, text);
r = file_url_from_path(path, &url);
if (r < 0)