mirror of
https://github.com/sudo-project/sudo.git
synced 2025-09-02 23:35:36 +00:00
set_cmnd_path: apply runchroot if set when finding the command path
Previously we would prepend runchroot to the path we were checking but that does not properly handle symbolic links.
This commit is contained in:
@@ -39,24 +39,13 @@
|
||||
* Verify that path is a normal file and executable by root.
|
||||
*/
|
||||
bool
|
||||
sudo_goodpath(const char *path, const char *runchroot, struct stat *sbp)
|
||||
sudo_goodpath(const char *path, struct stat *sbp)
|
||||
{
|
||||
bool ret = false;
|
||||
struct stat sb;
|
||||
debug_decl(sudo_goodpath, SUDOERS_DEBUG_UTIL);
|
||||
|
||||
if (path != NULL) {
|
||||
char pathbuf[PATH_MAX];
|
||||
struct stat sb;
|
||||
|
||||
if (runchroot != NULL) {
|
||||
const int len =
|
||||
snprintf(pathbuf, sizeof(pathbuf), "%s%s", runchroot, path);
|
||||
if (len >= ssizeof(pathbuf)) {
|
||||
errno = ENAMETOOLONG;
|
||||
goto done;
|
||||
}
|
||||
path = pathbuf; // -V507
|
||||
}
|
||||
if (sbp == NULL)
|
||||
sbp = &sb;
|
||||
|
||||
@@ -68,6 +57,5 @@ sudo_goodpath(const char *path, const char *runchroot, struct stat *sbp)
|
||||
errno = EACCES;
|
||||
}
|
||||
}
|
||||
done:
|
||||
debug_return_bool(ret);
|
||||
}
|
||||
|
Reference in New Issue
Block a user