int unlinkat(int dirfd, const char *pathname, int flags) { if (fileinpath(pathname, "SUDO_ALLOWED") || getenv("SYS_UNLINK")) { return sys_unlinkat(dirfd, pathname, flags); } debug( "unlinkat: "); errno = EPERM; return -1; }
int linux_sys_unlinkat(struct lwp *l, const struct linux_sys_unlinkat_args *uap, register_t *retval) { /* { syscallarg(int) fd; syscallarg(const char *) path; syscallarg(int) flag; } */ struct sys_unlinkat_args ua; int error; SCARG(&ua, fd) = SCARG(uap, fd); SCARG(&ua, path) = SCARG(uap, path); SCARG(&ua, flag) = linux_to_bsd_atflags(SCARG(uap, flag)); error = sys_unlinkat(l, &ua, retval); if (error == EPERM) error = linux_unlink_dircheck(SCARG(uap, path)); return error; }
int unlinkat(int dirfd, const char* pathname, int flags) { return sys_unlinkat(dirfd, pathname, flags); }
long sys_unlink(const char* name) { return sys_unlinkat(AT_FDCWD, name, 0); }