ebiederm@xxxxxxxxxxxx (Eric W. Biederman) writes: > Mickaël Salaün <mic@xxxxxxxxxxx> writes: > >> From: Kees Cook <keescook@xxxxxxxxxxxx> >> >> 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