chiark / gitweb /
util_unlink_secure(): chmod() before chown()
authorKay Sievers <kay.sievers@vrfy.org>
Sat, 29 Aug 2009 14:10:24 +0000 (16:10 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Sat, 29 Aug 2009 14:10:24 +0000 (16:10 +0200)
Suggested by Florian Zumbiehl <florz@florz.de>.

libudev/libudev-util-private.c

index 84dee559c40cafdb4c345786c8d6d61dee88a4fc..cb8d2c8a2e9a081b4eb9ea71373ec3ffcc3f199d 100644 (file)
@@ -100,24 +100,16 @@ int util_delete_path(struct udev *udev, const char *path)
  */
 int util_unlink_secure(struct udev *udev, const char *filename)
 {
  */
 int util_unlink_secure(struct udev *udev, const char *filename)
 {
-       int retval;
-
-       retval = chown(filename, 0, 0);
-       if (retval)
-               err(udev, "chown(%s, 0, 0) failed: %m\n", filename);
-
-       retval = chmod(filename, 0000);
-       if (retval)
-               err(udev, "chmod(%s, 0000) failed: %m\n", filename);
+       int err;
 
 
-       retval = unlink(filename);
+       chmod(filename, 0000);
+       chown(filename, 0, 0);
+       err = unlink(filename);
        if (errno == ENOENT)
        if (errno == ENOENT)
-               retval = 0;
-
-       if (retval)
+               err = 0;
+       if (err)
                err(udev, "unlink(%s) failed: %m\n", filename);
                err(udev, "unlink(%s) failed: %m\n", filename);
-
-       return retval;
+       return err;
 }
 
 uid_t util_lookup_user(struct udev *udev, const char *user)
 }
 
 uid_t util_lookup_user(struct udev *udev, const char *user)