mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
exec: Allow load_misc_binary to call prepare_binprm unconditionally
Add a flag preserve_creds that binfmt_misc can set to prevent credentials from being updated. This allows binfmt_misc to always call prepare_binprm. Allowing the credential computation logic to be consolidated. Not replacing the credentials with the interpreters credentials is safe because because an open file descriptor to the executable is passed to the interpreter. As the interpreter does not need to reopen the executable it is guaranteed to see the same file that exec sees. Ref: c407c033de84 ("[PATCH] binfmt_misc: improve calculation of interpreter's credentials") Link: https://lkml.kernel.org/r/87imgszrwo.fsf_-_@x220.int.ebiederm.org Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
112b714759
commit
a16b3357b2
3 changed files with 17 additions and 19 deletions
|
@ -218,19 +218,10 @@ static int load_misc_binary(struct linux_binprm *bprm)
|
|||
goto error;
|
||||
|
||||
bprm->file = interp_file;
|
||||
if (fmt->flags & MISC_FMT_CREDENTIALS) {
|
||||
loff_t pos = 0;
|
||||
|
||||
/*
|
||||
* No need to call prepare_binprm(), it's already been
|
||||
* done. bprm->buf is stale, update from interp_file.
|
||||
*/
|
||||
memset(bprm->buf, 0, BINPRM_BUF_SIZE);
|
||||
retval = kernel_read(bprm->file, bprm->buf, BINPRM_BUF_SIZE,
|
||||
&pos);
|
||||
} else
|
||||
retval = prepare_binprm(bprm);
|
||||
if (fmt->flags & MISC_FMT_CREDENTIALS)
|
||||
bprm->preserve_creds = 1;
|
||||
|
||||
retval = prepare_binprm(bprm);
|
||||
if (retval < 0)
|
||||
goto error;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue