util_unlink_secure(): chmod() before chown()

Suggested by Florian Zumbiehl <florz@florz.de>.
This commit is contained in:
Kay Sievers
2009-08-29 16:10:24 +02:00
parent e20294e018
commit 39087d3bdd
+7 -15
View 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 retval;
int err;
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);
retval = unlink(filename);
chmod(filename, 0000);
chown(filename, 0, 0);
err = unlink(filename);
if (errno == ENOENT)
retval = 0;
if (retval)
err = 0;
if (err)
err(udev, "unlink(%s) failed: %m\n", filename);
return retval;
return err;
}
uid_t util_lookup_user(struct udev *udev, const char *user)