Messages in this thread | | | From | (Eric W. Biederman) | Date | Tue, 11 Aug 2020 14:14:43 -0500 | Subject | Re: [PATCH v7 1/7] exec: Change uselib(2) IS_SREG() failure to EACCES |
| |
ebiederm@xmission.com (Eric W. Biederman) writes:
> Mickaël Salaün <mic@digikod.net> writes: > >> From: Kees Cook <keescook@chromium.org> >> >> Change uselib(2)' S_ISREG() error return to EACCES instead of EINVAL so >> the behavior matches execve(2), and the seemingly documented value. >> The "not a regular file" failure mode of execve(2) is explicitly >> documented[1], but it is not mentioned in uselib(2)[2] which does, >> however, say that open(2) and mmap(2) errors may apply. The documentation >> for open(2) does not include a "not a regular file" error[3], but mmap(2) >> does[4], and it is EACCES. > > Do you have enough visibility into uselib to be certain this will change > will not cause regressions? > > My sense of uselib is that it would be easier to remove the system call > entirely (I think it's last use was in libc5) than to validate that a > change like this won't cause problems for the users of uselib. > > For the kernel what is important are real world users and the manpages > are only important as far as they suggest what the real world users > do.
Hmm.
My apologies. After reading the next patch I see that what really makes this safe is: 73601ea5b7b1 ("fs/open.c: allow opening only regular files during execve()").
As in practice this change has already been made and uselib simply can not reach the !S_ISREG test.
It might make sense to drop this patch or include that reference in the next posting of this patch.
Eric
| |