]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udevadm: fix fd leak on oom 8188/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 15 Feb 2018 09:30:46 +0000 (10:30 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 15 Feb 2018 10:49:40 +0000 (11:49 +0100)
Unlikely, but let's be correct.

CID #1386003.

src/udev/udevadm-trigger.c

index 05ddcdf48b76a0846b67271cdb633680a9096f51..d979c1bc249af1d11b14b458455001ecfcd9b745 100644 (file)
@@ -42,7 +42,7 @@ static int exec_list(struct udev_enumerate *udev_enumerate, const char *action,
         udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(udev_enumerate)) {
                 char filename[UTIL_PATH_SIZE];
                 const char *syspath;
-                int fd;
+                _cleanup_close_ int fd = -1;
 
                 syspath = udev_list_entry_get_name(entry);
                 if (verbose)
@@ -54,14 +54,15 @@ static int exec_list(struct udev_enumerate *udev_enumerate, const char *action,
                 fd = open(filename, O_WRONLY|O_CLOEXEC);
                 if (fd < 0)
                         continue;
+
                 if (settle_set) {
                         r = set_put_strdup(settle_set, syspath);
                         if (r < 0)
                                 return log_oom();
                 }
+
                 if (write(fd, action, strlen(action)) < 0)
                         log_debug_errno(errno, "error writing '%s' to '%s': %m", action, filename);
-                close(fd);
         }
 
         return 0;