Set errno to EISDIR instead of ENOTDIR if directory is writable

since ENOTDIR can be a legitimate errno.  This avoids a bogus
"directory is writable" error in that case.
This commit is contained in:
Todd C. Miller
2015-10-25 14:28:38 -06:00
parent e244b0cda2
commit 9ecf12daa7

View 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 {