resolved: use unlinkat() where appropriate
authorLennart Poettering <lennart@poettering.net>
Tue, 3 Sep 2024 08:52:16 +0000 (10:52 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 11 Sep 2024 19:34:51 +0000 (21:34 +0200)
src/resolve/resolved-manager.c

index c842bf69c5e9f871f92c31617eecd8aa369b5445..5f92684215c79ccfcce9745f2ef00992300fe648 100644 (file)
@@ -1726,7 +1726,6 @@ void manager_cleanup_saved_user(Manager *m) {
         }
 
         FOREACH_DIRENT_ALL(de, d, log_error_errno(errno, "Failed to read interface directory: %m")) {
-                _cleanup_free_ char *p = NULL;
                 int ifindex;
                 Link *l;
 
@@ -1750,13 +1749,8 @@ void manager_cleanup_saved_user(Manager *m) {
                 continue;
 
         rm:
-                p = path_join("/run/systemd/resolve/netif", de->d_name);
-                if (!p) {
-                        log_oom();
-                        return;
-                }
-
-                (void) unlink(p);
+                if (unlinkat(dirfd(d), de->d_name, 0) < 0)
+                        log_warning_errno(errno, "Failed to remove left-over interface configuration file '%s', ignoring: %m", de->d_name);
         }
 }