lkml.org 
[lkml]   [2007]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch 0/3] no MAX_ARG_PAGES -v2
> @@ -1385,6 +1401,10 @@ int do_execve(char * filename,
> goto out;
> bprm->argv_len = env_p - bprm->p;
>
> + retval = expand_arg_vma(bprm);
> + if (retval < 0)
> + goto out;
> +
> retval = search_binary_handler(bprm,regs);
> if (retval >= 0) {
> /* execve success */

At this point bprm->argc hasn't been finalized yet. For example, the
script binfmt reads the script header and adds additional arguments.
The flush_old_exec() function is a better place to call this.

I'm not 100% sure this is the right way to handle this, though. The
problem isn't as simple as ensuring the stack doesn't overflow during
argument allocation. We also need to ensure the program has
sufficient stack space to run subsequently. Otherwise, the observable
behavior is identical. Since we can't realistically predict
acceptable stack availability requirements, some amount of uncertainty
is always going to exist. A good heuristic, though, might be to limit
argument size to a percentage (say 25%) of maximum stack size and
validate this inside copy_strings().

Ollie
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-06-14 23:03    [W:0.087 / U:2.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site