]> granicus.if.org Git - sudo/commitdiff
If the user runs "sudoedit /" we will receive ENOENT from openat(2)
authorTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 20 Jan 2016 22:36:20 +0000 (15:36 -0700)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Wed, 20 Jan 2016 22:36:20 +0000 (15:36 -0700)
and sudoedit will try to create a file with the null string.  If
path is empty, open the cwd instead so sudoedit can give a sensible
error message.

src/sudo_edit.c

index 15abf118317af091fee4a88f48d0aaaad0bfd65c..02bd9219e7fb9344e8ddcc10252c40f9f7597065 100644 (file)
@@ -411,7 +411,12 @@ sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode,
        debug_return_int(-1);
     }
 
-    fd = openat(dfd, path, oflags, mode);
+    /*
+     * For "sudoedit /" we will receive ENOENT from openat() and sudoedit
+     * will try to create a file with an empty name.  We treat an empty
+     * path as the cwd so sudoedit can give a sensible error message.
+     */
+    fd = openat(dfd, *path ? path : ".", oflags, mode);
     close(dfd);
     debug_return_int(fd);
 }