From: Todd C. Miller Date: Tue, 28 May 1996 00:01:53 +0000 (+0000) Subject: in sudoers, 'command ""' now means command with no args X-Git-Tag: SUDO_1_5_0~189 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ec0715a31d262fc00687c67df40f7009fd12c45;p=sudo in sudoers, 'command ""' now means command with no args --- diff --git a/parse.c b/parse.c index 7700b6495..cc776b98d 100644 --- a/parse.c +++ b/parse.c @@ -182,7 +182,7 @@ int validate(check_cmnd) /* * If path doesn't end in /, return TRUE iff cmnd & path name the same inode; - * otherwise, return TRUE if cmnd names one of the inodes in path + * otherwise, return TRUE if cmnd names one of the inodes in path. */ int command_matches(cmnd, user_args, path, sudoers_args) char *cmnd; @@ -227,6 +227,9 @@ int command_matches(cmnd, user_args, path, sudoers_args) return(TRUE); else if (user_args && sudoers_args) return(compare_args(user_args, sudoers_args)); + else if (!user_args && sudoers_args && sudoers_args[0][0] == '\0' && + sudoers_args[1] == NULL) + return(TRUE); else return(FALSE); } else { @@ -252,15 +255,16 @@ int command_matches(cmnd, user_args, path, sudoers_args) * (in sudoers or command) or if the args match; * else return false. */ - if (cmnd_st.st_dev == pst.st_dev && cmnd_st.st_ino == pst.st_ino) { - if (!sudoers_args) { - return(TRUE); - } else if (user_args && sudoers_args) { - return(compare_args(user_args, sudoers_args)); - } else { - return(FALSE); - } - } else + if (cmnd_st.st_dev != pst.st_dev || cmnd_st.st_ino != pst.st_ino) + return(FALSE); + if (!sudoers_args) + return(TRUE); + else if (user_args && sudoers_args) + return(compare_args(user_args, sudoers_args)); + else if (!user_args && sudoers_args && sudoers_args[0][0] == '\0' && + sudoers_args[1] == NULL) + return(TRUE); + else return(FALSE); }