case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
if (curr->w_NumArgs < MAXARGS)
{
if (curr->w_args[curr->w_NumArgs] < 100000000)
curr->w_args[curr->w_NumArgs] =
10 * curr->w_args[curr->w_NumArgs] + (c - '0');
}
break;
case ';':
case ':':
curr->w_NumArgs++;
break;
> w_NumArgs is signed integer, so after you've sent 2GB of ';' characters in
> escape sequence it wraps to negative and the < MAXARGS protection fails.
Гораздо раньше будет либо превышен лимит какой-нибудь ( as, rss, stack ),
либо израсходована вся доступная память...