Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a852d3b authored by David Howells's avatar David Howells Committed by James Morris
Browse files

CRED: Fix load_flat_shared_library() to initialise bprm correctly



Fix binfmt_flag's load_flat_shared_library() to initialise bprm correctly.

Currently, prepare_binprm() is called with only .filename .file and .cred
fields set in bprm, but the .cred_prepared and .per_clear fields at least need
initialising.

Reported-by: default avatarTetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarJames Morris <jmorris@namei.org>
parent db5ca356
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -820,6 +820,8 @@ static int load_flat_shared_library(int id, struct lib_info *libs)
	int res;
	int res;
	char buf[16];
	char buf[16];


	memset(&bprm, 0, sizeof(bprm));

	/* Create the file name */
	/* Create the file name */
	sprintf(buf, "/lib/lib%d.so", id);
	sprintf(buf, "/lib/lib%d.so", id);


@@ -835,6 +837,12 @@ static int load_flat_shared_library(int id, struct lib_info *libs)
	if (!bprm.cred)
	if (!bprm.cred)
		goto out;
		goto out;


	/* We don't really care about recalculating credentials at this point
	 * as we're past the point of no return and are dealing with shared
	 * libraries.
	 */
	bprm.cred_prepared = 1;

	res = prepare_binprm(&bprm);
	res = prepare_binprm(&bprm);


	if (!IS_ERR_VALUE(res))
	if (!IS_ERR_VALUE(res))