Cygwin: console: Prevent buffer overrun.
- This patch prevent potential buffer overrun in the code handling escape sequences.
This commit is contained in:
parent
10d8c2782d
commit
750cd6e5b2
|
@ -3094,7 +3094,8 @@ fhandler_console::write (const void *vsrc, size_t len)
|
||||||
case gotarg1:
|
case gotarg1:
|
||||||
if (isdigit (*src))
|
if (isdigit (*src))
|
||||||
{
|
{
|
||||||
con.args[con.nargs] = con.args[con.nargs] * 10 + *src - '0';
|
if (con.nargs < MAXARGS)
|
||||||
|
con.args[con.nargs] = con.args[con.nargs] * 10 + *src - '0';
|
||||||
wpbuf_put (*src);
|
wpbuf_put (*src);
|
||||||
src++;
|
src++;
|
||||||
}
|
}
|
||||||
|
@ -3102,9 +3103,8 @@ fhandler_console::write (const void *vsrc, size_t len)
|
||||||
{
|
{
|
||||||
wpbuf_put (*src);
|
wpbuf_put (*src);
|
||||||
src++;
|
src++;
|
||||||
con.nargs++;
|
if (con.nargs < MAXARGS)
|
||||||
if (con.nargs > MAXARGS)
|
con.nargs++;
|
||||||
con.nargs--;
|
|
||||||
}
|
}
|
||||||
else if (*src == ' ')
|
else if (*src == ' ')
|
||||||
{
|
{
|
||||||
|
@ -3117,9 +3117,8 @@ fhandler_console::write (const void *vsrc, size_t len)
|
||||||
con.state = gotcommand;
|
con.state = gotcommand;
|
||||||
break;
|
break;
|
||||||
case gotcommand:
|
case gotcommand:
|
||||||
con.nargs ++;
|
if (con.nargs < MAXARGS)
|
||||||
if (con.nargs > MAXARGS)
|
con.nargs++;
|
||||||
con.nargs--;
|
|
||||||
char_command (*src++);
|
char_command (*src++);
|
||||||
con.state = normal;
|
con.state = normal;
|
||||||
wpixput = 0;
|
wpixput = 0;
|
||||||
|
@ -3183,9 +3182,8 @@ fhandler_console::write (const void *vsrc, size_t len)
|
||||||
{
|
{
|
||||||
con.state = gotarg1;
|
con.state = gotarg1;
|
||||||
wpbuf_put (*src);
|
wpbuf_put (*src);
|
||||||
con.nargs++;
|
if (con.nargs < MAXARGS)
|
||||||
if (con.nargs > MAXARGS)
|
con.nargs++;
|
||||||
con.nargs--;
|
|
||||||
src++;
|
src++;
|
||||||
}
|
}
|
||||||
else if (isalpha (*src))
|
else if (isalpha (*src))
|
||||||
|
|
Loading…
Reference in New Issue