X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=fs%2Fbinfmt_misc.c;h=f2744ab4e5b35c415724034f3f5a3a328997cf99;hb=5f502a834a6471dc3cc456ccef66292e9e3a152e;hp=756205314c24401fc31ebbb6eb7c479aa4c92145;hpb=8d7ccaa545490cdffdfaff0842436a8dd85cf47b;p=linux-2.6-omap-h63xx.git diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c index 756205314c2..f2744ab4e5b 100644 --- a/fs/binfmt_misc.c +++ b/fs/binfmt_misc.c @@ -117,11 +117,9 @@ static int load_misc_binary(struct linux_binprm *bprm, struct pt_regs *regs) goto _ret; retval = -ENOEXEC; - if (bprm->misc_bang) + if (bprm->recursion_depth > BINPRM_MAX_RECURSION) goto _ret; - bprm->misc_bang = 1; - /* to keep locking time low, we copy the interpreter string */ read_lock(&entries_lock); fmt = check_file(bprm); @@ -199,6 +197,8 @@ static int load_misc_binary(struct linux_binprm *bprm, struct pt_regs *regs) if (retval < 0) goto _error; + bprm->recursion_depth++; + retval = search_binary_handler (bprm, regs); if (retval < 0) goto _error;