task_create: Don't even try if the accumulated size of the argument list is larger than the stack

This commit is contained in:
Gregory Nutt 2014-11-13 06:44:15 -06:00
parent 2a0549865f
commit bc265d74e7

View File

@ -490,9 +490,16 @@ static inline int task_stackargsetup(FAR struct task_tcb_s *tcb,
while (argv[argc]) while (argv[argc])
{ {
/* Add the size of this argument (with NUL terminator) */ /* Add the size of this argument (with NUL terminator).
* Check each time if the accumulated size exceeds the
* size of the allocated stack.
*/
strtablen += (strlen(argv[argc]) + 1); strtablen += (strlen(argv[argc]) + 1);
if (strtablen >= tcb->adj_stack_size)
{
return -ENAMETOOLONG;
}
/* Increment the number of args. Here is a sanity check to /* Increment the number of args. Here is a sanity check to
* prevent running away with an unterminated argv[] list. * prevent running away with an unterminated argv[] list.