]> granicus.if.org Git - sudo/commitdiff
Set errno to EISDIR instead of ENOTDIR if directory is writable
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 25 Oct 2015 20:28:38 +0000 (14:28 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sun, 25 Oct 2015 20:28:38 +0000 (14:28 -0600)
since ENOTDIR can be a legitimate errno.  This avoids a bogus
"directory is writable" error in that case.

src/sudo_edit.c

index 6a2cec564e88ec053c19877b4e6242ad53a69145..b49d90bc9273e8ce3804e95e8cdcd7e79ffe2221 100644 (file)
@@ -289,7 +289,7 @@ sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode)
     if (dir_is_writable(&sb, user_details.uid, user_details.gid,
        user_details.ngroups, user_details.groups)) {
        close(dfd);
-       errno = ENOTDIR;
+       errno = EISDIR;
        debug_return_int(-1);
     }
 
@@ -418,7 +418,7 @@ sudo_edit_create_tfiles(struct command_details *command_details,
            if (ofd == -1 && errno == ELOOP) {
                sudo_warnx(U_("%s: editing symbolic links is not permitted"),
                    files[i]);
-           } else if (ofd == -1 && errno == ENOTDIR) {
+           } else if (ofd == -1 && errno == EISDIR) {
                sudo_warnx(U_("%s: editing files in a writable directory is not permitted"),
                    files[i]);
            } else {