flat: fix uninitialized ptr with shared libs
The new credentials code broke load_flat_shared_library() as it now uses an uninitialized cred pointer. Reported-by: Bernd Schmidt <bernds_cb1@t-online.de> Tested-by: Bernd Schmidt <bernds_cb1@t-online.de> Cc: Mike Frysinger <vapier@gentoo.org> Cc: David Howells <dhowells@redhat.com> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9e5cf0ca2e
commit
3440625d78
|
@ -828,15 +828,22 @@ static int load_flat_shared_library(int id, struct lib_info *libs)
|
||||||
if (IS_ERR(bprm.file))
|
if (IS_ERR(bprm.file))
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
|
bprm.cred = prepare_exec_creds();
|
||||||
|
res = -ENOMEM;
|
||||||
|
if (!bprm.cred)
|
||||||
|
goto out;
|
||||||
|
|
||||||
res = prepare_binprm(&bprm);
|
res = prepare_binprm(&bprm);
|
||||||
|
|
||||||
if (res <= (unsigned long)-4096)
|
if (res <= (unsigned long)-4096)
|
||||||
res = load_flat_file(&bprm, libs, id, NULL);
|
res = load_flat_file(&bprm, libs, id, NULL);
|
||||||
if (bprm.file) {
|
|
||||||
allow_write_access(bprm.file);
|
abort_creds(bprm.cred);
|
||||||
fput(bprm.file);
|
|
||||||
bprm.file = NULL;
|
out:
|
||||||
}
|
allow_write_access(bprm.file);
|
||||||
|
fput(bprm.file);
|
||||||
|
|
||||||
return(res);
|
return(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue