In the unlinkat syscall, the operation is performed on the directory

descriptor, not the file descriptor. The file descriptor is used only for
verification so do not expect any additional capabilities on it.

Reported by:	antoine
Tested by:	antoine
Discussed with:	kib, emaste, bapt
Sponsored by:	Fudo Security
This commit is contained in:
Mariusz Zaborski 2019-04-08 14:23:52 +00:00
parent ab0280c4d0
commit de0b14f2db
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=346029

View File

@ -1809,13 +1809,11 @@ kern_funlinkat(struct thread *td, int dfd, const char *path, int fd,
struct vnode *vp;
struct nameidata nd;
struct stat sb;
cap_rights_t rights;
int error;
fp = NULL;
if (fd != FD_NONE) {
error = getvnode(td, fd, cap_rights_init(&rights, CAP_LOOKUP),
&fp);
error = getvnode(td, fd, &cap_no_rights, &fp);
if (error != 0)
return (error);
}