]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge pull request #12837 from yuwata/tree-wide-lgtm-fixes
authorLennart Poettering <lennart@poettering.net>
Thu, 20 Jun 2019 10:35:34 +0000 (12:35 +0200)
committerGitHub <noreply@github.com>
Thu, 20 Jun 2019 10:35:34 +0000 (12:35 +0200)
tree-wide: fix issues found by lgtm

src/basic/cgroup-util.c
src/basic/virt.c
src/delta/delta.c
src/getty-generator/getty-generator.c
src/journal/journalctl.c
src/journal/journald-audit.c
src/libsystemd/sd-device/sd-device.c
src/locale/keymap-util.c
src/network/networkd-address.c
src/shared/firewall-util.c

index e6a8b0e0fb2423dfce21b3603eb981ba64c28141..156a360885d05074be48bed7ec958ed7a0242a70 100644 (file)
@@ -91,10 +91,9 @@ int cg_read_event(
                 const char *controller,
                 const char *path,
                 const char *event,
-                char **val) {
+                char **ret) {
 
         _cleanup_free_ char *events = NULL, *content = NULL;
-        char *p, *line;
         int r;
 
         r = cg_get_path(controller, path, "cgroup.events", &events);
@@ -105,22 +104,33 @@ int cg_read_event(
         if (r < 0)
                 return r;
 
-        p = content;
-        while ((line = strsep(&p, "\n"))) {
-                char *key;
+        for (const char *p = content;;) {
+                _cleanup_free_ char *line = NULL, *key = NULL, *val = NULL;
+                const char *q;
 
-                key = strsep(&line, " ");
-                if (!key || !line)
+                r = extract_first_word(&p, &line, "\n", 0);
+                if (r < 0)
+                        return r;
+                if (r == 0)
+                        return -ENOENT;
+
+                q = line;
+                r = extract_first_word(&q, &key, " ", 0);
+                if (r < 0)
+                        return r;
+                if (r == 0)
                         return -EINVAL;
 
-                if (strcmp(key, event))
+                if (!streq(key, event))
                         continue;
 
-                *val = strdup(line);
+                val = strdup(q);
+                if (!val)
+                        return -ENOMEM;
+
+                *ret = TAKE_PTR(val);
                 return 0;
         }
-
-        return -ENOENT;
 }
 
 bool cg_ns_supported(void) {
index 84b2d64b25621773bcab9fe21742691ef88a4f57..7a7400773bd8f168931651757708fae1f951c52b 100644 (file)
@@ -198,7 +198,6 @@ static int detect_vm_xen(void) {
 /* Returns -errno, or 0 for domU, or 1 for dom0 */
 static int detect_vm_xen_dom0(void) {
         _cleanup_free_ char *domcap = NULL;
-        char *cap, *i;
         int r;
 
         r = read_one_line_file(PATH_FEATURES, &domcap);
@@ -229,17 +228,22 @@ static int detect_vm_xen_dom0(void) {
         if (r < 0)
                 return r;
 
-        i = domcap;
-        while ((cap = strsep(&i, ",")))
-                if (streq(cap, "control_d"))
-                        break;
-        if (!cap) {
-                log_debug("Virtualization XEN DomU found (/proc/xen/capabilities)");
-                return 0;
-        }
+        for (const char *i = domcap;;) {
+                _cleanup_free_ char *cap = NULL;
 
-        log_debug("Virtualization XEN Dom0 ignored (/proc/xen/capabilities)");
-        return 1;
+                r = extract_first_word(&i, &cap, ",", 0);
+                if (r < 0)
+                        return r;
+                if (r == 0) {
+                        log_debug("Virtualization XEN DomU found (/proc/xen/capabilities)");
+                        return 0;
+                }
+
+                if (streq(cap, "control_d")) {
+                        log_debug("Virtualization XEN Dom0 ignored (/proc/xen/capabilities)");
+                        return 1;
+                }
+        }
 }
 
 static int detect_vm_hypervisor(void) {
index 63baa747949e590c8c55bf62a59bea834a4ad7bd..08d8867431d6ffacf0b00f58e2ffeef4175295d1 100644 (file)
@@ -371,7 +371,7 @@ static int enumerate_dir(
         return 0;
 }
 
-static bool should_skip_path(const char *prefix, const char *suffix) {
+static int should_skip_path(const char *prefix, const char *suffix) {
 #if HAVE_SPLIT_USR
         _cleanup_free_ char *target = NULL;
         const char *p;
@@ -383,10 +383,16 @@ static bool should_skip_path(const char *prefix, const char *suffix) {
                 return false;
 
         NULSTR_FOREACH(p, prefixes) {
+                _cleanup_free_ char *tmp = NULL;
+
                 if (path_startswith(dirname, p))
                         continue;
 
-                if (path_equal(target, strjoina(p, "/", suffix))) {
+                tmp = path_join(p, suffix);
+                if (!tmp)
+                        return -ENOMEM;
+
+                if (path_equal(target, tmp)) {
                         log_debug("%s redirects to %s, skipping.", dirname, target);
                         return true;
                 }
@@ -423,7 +429,7 @@ static int process_suffix(const char *suffix, const char *onlyprefix) {
         NULSTR_FOREACH(p, prefixes) {
                 _cleanup_free_ char *t = NULL;
 
-                if (should_skip_path(p, suffix))
+                if (should_skip_path(p, suffix) > 0)
                         continue;
 
                 t = strjoin(p, "/", suffix);
index 35501b61f59d43df8c8997384044d47ddfb0c8f8..8610ab67058462e3c1dba9a757c1bf302d177155 100644 (file)
@@ -189,9 +189,11 @@ static int run(const char *dest, const char *dest_early, const char *dest_late)
                        "sclp_line0",
                        "ttysclp0",
                        "3270!tty1") {
-                const char *p;
+                _cleanup_free_ char *p = NULL;
 
-                p = strjoina("/sys/class/tty/", j);
+                p = path_join("/sys/class/tty", j);
+                if (!p)
+                        return -ENOMEM;
                 if (access(p, F_OK) < 0)
                         continue;
 
index a3eb61e0f12d3b6d5dd8a7e3fe5103c5518467a8..27518b636342e17847218156df2bb7ed98d5939b 100644 (file)
@@ -1679,9 +1679,11 @@ static int add_syslog_identifier(sd_journal *j) {
         assert(j);
 
         STRV_FOREACH(i, arg_syslog_identifier) {
-                char *u;
+                _cleanup_free_ char *u = NULL;
 
-                u = strjoina("SYSLOG_IDENTIFIER=", *i);
+                u = strjoin("SYSLOG_IDENTIFIER=", *i);
+                if (!u)
+                        return -ENOMEM;
                 r = sd_journal_add_match(j, u, 0);
                 if (r < 0)
                         return r;
index 71d9282ed52133c5510b09c06e2089fede07006c..fae9138ecb23b4360bc3e2efe6c53927a9f0e40b 100644 (file)
@@ -264,8 +264,8 @@ static int map_all_fields(
                 if (handle_msg) {
                         v = startswith(p, "msg='");
                         if (v) {
+                                _cleanup_free_ char *c = NULL;
                                 const char *e;
-                                char *c;
 
                                 /* Userspace message. It's enclosed in
                                    simple quotation marks, is not
@@ -279,7 +279,10 @@ static int map_all_fields(
                                 if (!e)
                                         return 0; /* don't continue splitting up if the final quotation mark is missing */
 
-                                c = strndupa(v, e - v);
+                                c = strndup(v, e - v);
+                                if (!c)
+                                        return -ENOMEM;
+
                                 return map_all_fields(c, map_fields_userspace, "AUDIT_FIELD_", false, iov, n_iov_allocated, n_iov);
                         }
                 }
index c2315c03fe6d803403e0a0c747fa59c3270c822a..b1572981b175474485b07d0d7dbc78f819ecae79 100644 (file)
@@ -1600,14 +1600,16 @@ static int device_sysattrs_read_all(sd_device *device) {
                 return r;
 
         FOREACH_DIRENT_ALL(dent, dir, return -errno) {
-                char *path;
+                _cleanup_free_ char *path = NULL;
                 struct stat statbuf;
 
                 /* only handle symlinks and regular files */
                 if (!IN_SET(dent->d_type, DT_LNK, DT_REG))
                         continue;
 
-                path = strjoina(syspath, "/", dent->d_name);
+                path = path_join(syspath, dent->d_name);
+                if (!path)
+                        return -ENOMEM;
 
                 if (lstat(path, &statbuf) != 0)
                         continue;
index e238e5a124c2df6f5778a5186c397e12a4b440a6..c7dcd8ad38b644e2ab7bac647059b64debaf292c 100644 (file)
@@ -648,11 +648,11 @@ int find_legacy_keymap(Context *c, char **ret) {
                         if (startswith_comma(c->x11_layout, a[1]))
                                 matching = 5;
                         else  {
-                                char *x;
+                                _cleanup_free_ char *x = NULL;
 
                                 /* If that didn't work, strip off the
                                  * other layouts from the entry, too */
-                                x = strndupa(a[1], strcspn(a[1], ","));
+                                x = strndup(a[1], strcspn(a[1], ","));
                                 if (startswith_comma(c->x11_layout, x))
                                         matching = 1;
                         }
index e75a49f6149a5d16df900e1209db12565f4b2aeb..a207bb07901df5dc01be861690ac35efcbd8baaf 100644 (file)
@@ -793,7 +793,7 @@ int config_parse_address(const char *unit,
                 n->in_addr_peer = buffer;
 
         if (n->family == AF_INET && n->broadcast.s_addr == 0 && n->prefixlen <= 30)
-                n->broadcast.s_addr = n->in_addr.in.s_addr | htonl(0xfffffffflu >> n->prefixlen);
+                n->broadcast.s_addr = n->in_addr.in.s_addr | htobe32(0xfffffffflu >> n->prefixlen);
 
         n = NULL;
 
index cba52fb41914c90d1018c0ac21014cc3a7a57521..87bc3f76fedd29b31feb58b1d28f11fd255f942d 100644 (file)
@@ -266,9 +266,9 @@ int fw_add_local_dnat(
         mr->range[0].flags = NF_NAT_RANGE_PROTO_SPECIFIED|NF_NAT_RANGE_MAP_IPS;
         mr->range[0].min_ip = mr->range[0].max_ip = remote->in.s_addr;
         if (protocol == IPPROTO_TCP)
-                mr->range[0].min.tcp.port = mr->range[0].max.tcp.port = htons(remote_port);
+                mr->range[0].min.tcp.port = mr->range[0].max.tcp.port = htobe16(remote_port);
         else
-                mr->range[0].min.udp.port = mr->range[0].max.udp.port = htons(remote_port);
+                mr->range[0].min.udp.port = mr->range[0].max.udp.port = htobe16(remote_port);
 
         mask = alloca0(sz);
         memset(mask, 0xFF, sz);