diff options
Diffstat (limited to 'fs/binfmt_script.c')
| -rw-r--r-- | fs/binfmt_script.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c index 9e3963f7ebf..08343505e18 100644 --- a/fs/binfmt_script.c +++ b/fs/binfmt_script.c @@ -22,14 +22,15 @@ static int load_script(struct linux_binprm *bprm,struct pt_regs *regs)  	char interp[BINPRM_BUF_SIZE];  	int retval; -	if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') || (bprm->sh_bang))  +	if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') || +	    (bprm->recursion_depth > BINPRM_MAX_RECURSION))  		return -ENOEXEC;  	/*  	 * This section does the #! interpretation.  	 * Sorta complicated, but hopefully it will work.  -TYT  	 */ -	bprm->sh_bang = 1; +	bprm->recursion_depth++;  	allow_write_access(bprm->file);  	fput(bprm->file);  	bprm->file = NULL;  |