tree-wide: introduce mfree()
authorDavid Herrmann <dh.herrmann@gmail.com>
Fri, 31 Jul 2015 17:56:38 +0000 (19:56 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Fri, 31 Jul 2015 17:56:38 +0000 (19:56 +0200)
Pretty trivial helper which wraps free() but returns NULL, so we can
simplify this:
        free(foobar);
        foobar = NULL;
to this:
        foobar = mfree(foobar);

25 files changed:
src/basic/copy.c
src/basic/util.h
src/bus-proxyd/bus-xml-policy.c
src/core/load-fragment.c
src/core/main.c
src/core/snapshot.c
src/cryptsetup/cryptsetup.c
src/firstboot/firstboot.c
src/import/pull-dkr.c
src/journal/catalog.c
src/journal/coredumpctl.c
src/journal/journalctl.c
src/libsystemd/sd-bus/bus-match.c
src/libsystemd/sd-bus/busctl-introspect.c
src/libsystemd/sd-netlink/test-local-addresses.c
src/login/logind-dbus.c
src/nspawn/nspawn.c
src/nss-myhostname/nss-myhostname.c
src/shared/conf-parser.c
src/systemctl/systemctl.c
src/sysusers/sysusers.c
src/test/test-util.c
src/tty-ask-password-agent/tty-ask-password-agent.c
src/udev/udev-builtin-path_id.c
src/udev/udev-rules.c

index e2d356d..33427c6 100644 (file)
@@ -467,8 +467,7 @@ int copy_xattr(int fdf, int fdt) {
 
                 sza *= 2;
 
-                free(bufa);
-                bufa = NULL;
+                bufa = mfree(bufa);
         }
 
         p = bufa;
@@ -491,8 +490,7 @@ int copy_xattr(int fdf, int fdt) {
                         if (m < 0) {
                                 if (errno == ERANGE) {
                                         szb *= 2;
-                                        free(bufb);
-                                        bufb = NULL;
+                                        bufb = mfree(bufb);
                                         continue;
                                 }
 
index c2e5cc6..06c8266 100644 (file)
@@ -84,6 +84,11 @@ bool streq_ptr(const char *a, const char *b) _pure_;
 
 #define malloc0(n) (calloc((n), 1))
 
+static inline void *mfree(void *memory) {
+        free(memory);
+        return NULL;
+}
+
 static inline const char* yes_no(bool b) {
         return b ? "yes" : "no";
 }
index dab5acb..9a3b451 100644 (file)
@@ -586,10 +586,8 @@ static int file_load(Policy *p, const char *path) {
                                 case POLICY_ITEM_SEND:
                                 case POLICY_ITEM_RECV:
 
-                                        if (streq(name, "*")) {
-                                                free(name);
-                                                name = NULL;
-                                        }
+                                        if (streq(name, "*"))
+                                                name = mfree(name);
                                         break;
 
 
index a48cb40..ba73cc4 100644 (file)
@@ -3508,9 +3508,7 @@ static int load_from_path(Unit *u, const char *path) {
 
                 r = open_follow(&filename, &f, symlink_names, &id);
                 if (r < 0) {
-                        free(filename);
-                        filename = NULL;
-
+                        filename = mfree(filename);
                         if (r != -ENOENT)
                                 return r;
                 }
@@ -3534,9 +3532,7 @@ static int load_from_path(Unit *u, const char *path) {
                                 r = open_follow(&filename, &f, symlink_names, &id);
 
                         if (r < 0) {
-                                free(filename);
-                                filename = NULL;
-
+                                filename = mfree(filename);
                                 if (r != -ENOENT)
                                         return r;
 
index 6ae8b51..a66fb18 100644 (file)
@@ -1844,13 +1844,11 @@ finish:
                 arg_default_rlimit[j] = NULL;
         }
 
-        free(arg_default_unit);
-        arg_default_unit = NULL;
+        arg_default_unit = mfree(arg_default_unit);
 
         free_join_controllers();
 
-        strv_free(arg_default_environment);
-        arg_default_environment = NULL;
+        arg_default_environment = strv_free(arg_default_environment);
 
         set_free(arg_syscall_archs);
         arg_syscall_archs = NULL;
index 1e634b9..9518e21 100644 (file)
@@ -217,8 +217,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e,
                                 break;
                         }
 
-                        free(n);
-                        n = NULL;
+                        n = mfree(n);
                 }
         }
 
index 5c6c7c0..74fa90a 100644 (file)
@@ -333,8 +333,7 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc
                 /* If the description string is simply the
                  * volume name, then let's not show this
                  * twice */
-                free(description);
-                description = NULL;
+                description = mfree(description);
         }
 
         if (mount_point && description)
index f06ab3d..05f1ae2 100644 (file)
@@ -715,10 +715,8 @@ static int parse_argv(int argc, char *argv[]) {
 
                         path_kill_slashes(arg_root);
 
-                        if (path_equal(arg_root, "/")) {
-                                free(arg_root);
-                                arg_root = NULL;
-                        }
+                        if (path_equal(arg_root, "/"))
+                                arg_root = mfree(arg_root);
 
                         break;
 
index 67ca1ce..c918f43 100644 (file)
@@ -592,8 +592,7 @@ static int dkr_pull_pull_layer_v2(DkrPull *i) {
 
                 i->current_ancestry++;
 
-                free(path);
-                path = NULL;
+                path = mfree(path);
         }
 
         log_info("Pulling layer %s...", layer);
@@ -652,8 +651,7 @@ static int dkr_pull_pull_layer(DkrPull *i) {
 
                 i->current_ancestry++;
 
-                free(path);
-                path = NULL;
+                path = mfree(path);
         }
 
         log_info("Pulling layer %s...", layer);
index 33b0539..a3e51e2 100644 (file)
@@ -263,8 +263,7 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) {
                                         if (r < 0)
                                                 return r;
 
-                                        free(lang);
-                                        lang = NULL;
+                                        lang = mfree(lang);
                                 }
 
                                 if (with_language) {
index fc49b2e..098f62a 100644 (file)
@@ -587,8 +587,7 @@ static int save_core(sd_journal *j, int fd, char **path, bool *unlink_temp) {
         if (filename && access(filename, R_OK) < 0) {
                 log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING,
                          "File %s is not readable: %m", filename);
-                free(filename);
-                filename = NULL;
+                filename = mfree(filename);
         }
 
         if (filename && !endswith(filename, ".xz") && !endswith(filename, ".lz4")) {
index 073cc77..355c4f1 100644 (file)
@@ -1259,8 +1259,7 @@ static int add_units(sd_journal *j) {
                 }
         }
 
-        strv_free(patterns);
-        patterns = NULL;
+        patterns = strv_free(patterns);
 
         STRV_FOREACH(i, arg_user_units) {
                 _cleanup_free_ char *u = NULL;
index e4cbd79..18c36ce 100644 (file)
@@ -861,8 +861,7 @@ int bus_match_parse(
                         if (r < 0)
                                 goto fail;
 
-                        free(value);
-                        value = NULL;
+                        value = mfree(value);
                 } else
                         u = 0;
 
index 15c10da..03e83d0 100644 (file)
@@ -462,9 +462,8 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
                                                 }
                                         }
 
-                                        free(argument_type);
-                                        free(argument_direction);
-                                        argument_type = argument_direction = NULL;
+                                        argument_type = mfree(argument_type);
+                                        argument_direction = mfree(argument_direction);
                                 }
 
                                 state = STATE_METHOD;
@@ -604,8 +603,7 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
                                         if (!strextend(&context->member_signature, argument_type, NULL))
                                                 return log_oom();
 
-                                        free(argument_type);
-                                        argument_type = NULL;
+                                        argument_type = mfree(argument_type);
                                 }
 
                                 state = STATE_SIGNAL;
index 38cbcfb..9867eec 100644 (file)
@@ -44,9 +44,8 @@ int main(int argc, char *argv[]) {
 
         printf("Local Addresses:\n");
         print_local_addresses(a, (unsigned) n);
-        free(a);
+        a = mfree(a);
 
-        a = NULL;
         n = local_gateways(NULL, 0, AF_UNSPEC, &a);
         assert_se(n >= 0);
 
index 397952e..b0cd85e 100644 (file)
@@ -725,15 +725,13 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
                         log_warning("Existing logind session ID %s used by new audit session, ignoring", id);
                         audit_id = 0;
 
-                        free(id);
-                        id = NULL;
+                        id = mfree(id);
                 }
         }
 
         if (!id) {
                 do {
-                        free(id);
-                        id = NULL;
+                        id = mfree(id);
 
                         if (asprintf(&id, "c%lu", ++m->session_counter) < 0)
                                 return -ENOMEM;
@@ -2355,8 +2353,7 @@ static int method_inhibit(sd_bus_message *message, void *userdata, sd_bus_error
                 return r;
 
         do {
-                free(id);
-                id = NULL;
+                id = mfree(id);
 
                 if (asprintf(&id, "%lu", ++m->inhibit_counter) < 0)
                         return -ENOMEM;
index d46f768..e78b15a 100644 (file)
@@ -309,8 +309,7 @@ static void custom_mount_free_all(void) {
                 strv_free(m->lower);
         }
 
-        free(arg_custom_mounts);
-        arg_custom_mounts = NULL;
+        arg_custom_mounts = mfree(arg_custom_mounts);
         arg_n_custom_mounts = 0;
 }
 
@@ -561,8 +560,7 @@ static int parse_argv(int argc, char *argv[]) {
 
                 case 'M':
                         if (isempty(optarg)) {
-                                free(arg_machine);
-                                arg_machine = NULL;
+                                arg_machine = mfree(arg_machine);
                         } else {
                                 if (!machine_name_is_valid(optarg)) {
                                         log_error("Invalid machine name: %s", optarg);
index 31db1aa..ab96cb2 100644 (file)
@@ -464,8 +464,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
                 }
         }
 
-        free(addresses);
-        addresses = NULL;
+        addresses = mfree(addresses);
 
         n_addresses = local_gateways(NULL, 0, AF_UNSPEC, &addresses);
         if (n_addresses > 0) {
index 7370c78..d99aa1d 100644 (file)
@@ -333,8 +333,7 @@ int config_parse(const char *unit,
                                 return -ENOMEM;
                         }
 
-                        free(continuation);
-                        continuation = NULL;
+                        continuation = mfree(continuation);
                         p = c;
                 } else
                         p = l;
index 6db4d65..4e850ea 100644 (file)
@@ -3327,8 +3327,7 @@ static void print_status_info(
                         if (! dir || last) {
                                 printf(dir ? "        " : "  Drop-In: ");
 
-                                free(dir);
-                                dir = NULL;
+                                dir = mfree(dir);
 
                                 if (path_get_parent(*dropin, &dir) < 0) {
                                         log_oom();
index b3fa29b..3a92d12 100644 (file)
@@ -704,8 +704,7 @@ static int write_files(void) {
                                 goto finish;
                         }
 
-                        free(group_tmp);
-                        group_tmp = NULL;
+                        group_tmp = mfree(group_tmp);
                 }
                 if (gshadow) {
                         if (rename(gshadow_tmp, gshadow_path) < 0) {
@@ -713,8 +712,7 @@ static int write_files(void) {
                                 goto finish;
                         }
 
-                        free(gshadow_tmp);
-                        gshadow_tmp = NULL;
+                        gshadow_tmp = mfree(gshadow_tmp);
                 }
         }
 
@@ -724,8 +722,7 @@ static int write_files(void) {
                         goto finish;
                 }
 
-                free(passwd_tmp);
-                passwd_tmp = NULL;
+                passwd_tmp = mfree(passwd_tmp);
         }
         if (shadow) {
                 if (rename(shadow_tmp, shadow_path) < 0) {
@@ -733,8 +730,7 @@ static int write_files(void) {
                         goto finish;
                 }
 
-                free(shadow_tmp);
-                shadow_tmp = NULL;
+                shadow_tmp = mfree(shadow_tmp);
         }
 
         r = 0;
@@ -1410,10 +1406,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         }
 
         /* Verify name */
-        if (isempty(name) || streq(name, "-")) {
-                free(name);
-                name = NULL;
-        }
+        if (isempty(name) || streq(name, "-"))
+                name = mfree(name);
 
         if (name) {
                 r = specifier_printf(name, specifier_table, NULL, &resolved_name);
@@ -1429,10 +1423,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         }
 
         /* Verify id */
-        if (isempty(id) || streq(id, "-")) {
-                free(id);
-                id = NULL;
-        }
+        if (isempty(id) || streq(id, "-"))
+                id = mfree(id);
 
         if (id) {
                 r = specifier_printf(id, specifier_table, NULL, &resolved_id);
@@ -1443,10 +1435,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         }
 
         /* Verify description */
-        if (isempty(description) || streq(description, "-")) {
-                free(description);
-                description = NULL;
-        }
+        if (isempty(description) || streq(description, "-"))
+                description = mfree(description);
 
         if (description) {
                 if (!valid_gecos(description)) {
@@ -1456,10 +1446,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         }
 
         /* Verify home */
-        if (isempty(home) || streq(home, "-")) {
-                free(home);
-                home = NULL;
-        }
+        if (isempty(home) || streq(home, "-"))
+                home = mfree(home);
 
         if (home) {
                 if (!valid_home(home)) {
index f43433b..fde3fa0 100644 (file)
@@ -714,45 +714,38 @@ static void test_cunescape(void) {
         assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", 0, &unescaped) < 0);
         assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "abc\\\"\b\f\a\n\r\t\v\003\177\234\313\\000\\x00"));
-        free(unescaped);
-        unescaped = NULL;
+        unescaped = mfree(unescaped);
 
         /* incomplete sequences */
         assert_se(cunescape("\\x0", 0, &unescaped) < 0);
         assert_se(cunescape("\\x0", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "\\x0"));
-        free(unescaped);
-        unescaped = NULL;
+        unescaped = mfree(unescaped);
 
         assert_se(cunescape("\\x", 0, &unescaped) < 0);
         assert_se(cunescape("\\x", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "\\x"));
-        free(unescaped);
-        unescaped = NULL;
+        unescaped = mfree(unescaped);
 
         assert_se(cunescape("\\", 0, &unescaped) < 0);
         assert_se(cunescape("\\", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "\\"));
-        free(unescaped);
-        unescaped = NULL;
+        unescaped = mfree(unescaped);
 
         assert_se(cunescape("\\11", 0, &unescaped) < 0);
         assert_se(cunescape("\\11", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "\\11"));
-        free(unescaped);
-        unescaped = NULL;
+        unescaped = mfree(unescaped);
 
         assert_se(cunescape("\\1", 0, &unescaped) < 0);
         assert_se(cunescape("\\1", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "\\1"));
-        free(unescaped);
-        unescaped = NULL;
+        unescaped = mfree(unescaped);
 
         assert_se(cunescape("\\u0000", 0, &unescaped) < 0);
         assert_se(cunescape("\\u00DF\\U000000df\\u03a0\\U00000041", UNESCAPE_RELAX, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, "ßßΠA"));
-        free(unescaped);
-        unescaped = NULL;
+        unescaped = mfree(unescaped);
 
         assert_se(cunescape("\\073", 0, &unescaped) >= 0);
         assert_se(streq_ptr(unescaped, ";"));
@@ -859,32 +852,28 @@ static void test_read_hostname_config(void) {
         write_string_file(path, "foo", WRITE_STRING_FILE_CREATE);
         assert_se(read_hostname_config(path, &hostname) == 0);
         assert_se(streq(hostname, "foo"));
-        free(hostname);
-        hostname = NULL;
+        hostname = mfree(hostname);
 
         /* with comment */
         write_string_file(path, "# comment\nfoo", WRITE_STRING_FILE_CREATE);
         assert_se(read_hostname_config(path, &hostname) == 0);
         assert_se(hostname);
         assert_se(streq(hostname, "foo"));
-        free(hostname);
-        hostname = NULL;
+        hostname = mfree(hostname);
 
         /* with comment and extra whitespace */
         write_string_file(path, "# comment\n\n foo ", WRITE_STRING_FILE_CREATE);
         assert_se(read_hostname_config(path, &hostname) == 0);
         assert_se(hostname);
         assert_se(streq(hostname, "foo"));
-        free(hostname);
-        hostname = NULL;
+        hostname = mfree(hostname);
 
         /* cleans up name */
         write_string_file(path, "!foo/bar.com", WRITE_STRING_FILE_CREATE);
         assert_se(read_hostname_config(path, &hostname) == 0);
         assert_se(hostname);
         assert_se(streq(hostname, "foobar.com"));
-        free(hostname);
-        hostname = NULL;
+        hostname = mfree(hostname);
 
         /* no value set */
         hostname = (char*) 0x1234;
index 73b19d8..82cbf95 100644 (file)
@@ -162,8 +162,7 @@ static int ask_password_plymouth(
                                 /* Hmm, first try with cached
                                  * passwords failed, so let's retry
                                  * with a normal password request */
-                                free(packet);
-                                packet = NULL;
+                                packet = mfree(packet);
 
                                 if (asprintf(&packet, "*\002%c%s%n", (int) (strlen(message) + 1), message, &n) < 0)
                                         return -ENOMEM;
index 4ca0a69..aa5cda6 100644 (file)
@@ -674,20 +674,16 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
          * might produce conflicting IDs if the parent does not provide a
          * unique and predictable name.
          */
-        if (!supported_parent) {
-                free(path);
-                path = NULL;
-        }
+        if (!supported_parent)
+                path = mfree(path);
 
         /*
          * Do not return block devices without a well-known transport. Some
          * devices do not expose their buses and do not provide a unique
          * and predictable name that way.
          */
-        if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) {
-                free(path);
-                path = NULL;
-        }
+        if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport)
+                path = mfree(path);
 
 out:
         if (path != NULL) {
index bbb9f97..368da9b 100644 (file)
@@ -2589,8 +2589,7 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) {
                         uid = 0;
                         gid = 0;
                         mode = 0;
-                        strv_free(tags);
-                        tags = NULL;
+                        tags = strv_free(tags);
                         break;
                 case TK_A_OWNER_ID:
                         uid = cur->key.uid;