chiark / gitweb /
microhttpd-util: avoid double free on error
[elogind.git] / src / network / networkd-link.c
index 39cef2254cb202cbd3d55c87ed972971ac51ce61..275ad97a6307f37c40cb33ba848bbeb9432f7cc5 100644 (file)
@@ -53,10 +53,10 @@ int link_new(Manager *manager, struct udev_device *device, Link **ret) {
         if (link->ifindex <= 0)
                 return -EINVAL;
 
-        r = asprintf(&link->state_file, "/run/systemd/network/links/%u",
-                     (unsigned) link->ifindex);
+        r = asprintf(&link->state_file, "/run/systemd/network/links/%"PRIu64,
+                     link->ifindex);
         if (r < 0)
-                return r;
+                return -ENOMEM;
 
         mac = udev_device_get_sysattr_value(device, "address");
         if (mac) {
@@ -1367,10 +1367,6 @@ int link_save(Link *link) {
         assert(link);
         assert(link->state_file);
 
-        r = mkdir_safe_label("/run/systemd/network/links", 0755, 0, 0);
-        if (r < 0)
-                goto finish;
-
         r = fopen_temporary(link->state_file, &f, &temp_path);
         if (r < 0)
                 goto finish;
@@ -1385,10 +1381,10 @@ int link_save(Link *link) {
         if (link->dhcp_lease) {
                 char *lease_file;
 
-                r = asprintf(&lease_file, "/run/systemd/network/leases/%u",
-                             (unsigned) link->ifindex);
+                r = asprintf(&lease_file, "/run/systemd/network/leases/%"PRIu64,
+                             link->ifindex);
                 if (r < 0)
-                        return r;
+                        return -ENOMEM;
 
                 r = dhcp_lease_save(link->dhcp_lease, lease_file);
                 if (r < 0)