1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-17 06:41:09 +03:00

Back-patch Neil's four additional buffer overrun checks.

This commit is contained in:
Tom Lane
2005-02-08 18:22:45 +00:00
parent d40cda00f5
commit 013d778e32

View File

@ -4,7 +4,7 @@
* procedural language * procedural language
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.39.2.1 2005/01/27 01:44:42 neilc Exp $ * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.39.2.2 2005/02/08 18:22:45 tgl Exp $
* *
* This software is copyrighted by Jan Wieck - Hamburg. * This software is copyrighted by Jan Wieck - Hamburg.
* *
@ -1612,6 +1612,14 @@ read_sql_construct(int until,
} }
if (plpgsql_SpaceScanned) if (plpgsql_SpaceScanned)
plpgsql_dstring_append(&ds, " "); plpgsql_dstring_append(&ds, " ");
/* Check for array overflow */
if (nparams >= 1024)
{
plpgsql_error_lineno = lno;
elog(ERROR, "too many variables specified in SQL statement");
}
switch (tok) switch (tok)
{ {
case T_VARIABLE: case T_VARIABLE:
@ -1761,6 +1769,13 @@ make_select_stmt(void)
while ((tok = yylex()) == ',') while ((tok = yylex()) == ',')
{ {
/* Check for array overflow */
if (nfields >= 1024)
{
plpgsql_error_lineno = yylineno;
elog(ERROR, "too many INTO variables specified");
}
tok = yylex(); tok = yylex();
switch(tok) switch(tok)
{ {
@ -1809,6 +1824,14 @@ make_select_stmt(void)
if (plpgsql_SpaceScanned) if (plpgsql_SpaceScanned)
plpgsql_dstring_append(&ds, " "); plpgsql_dstring_append(&ds, " ");
/* Check for array overflow */
if (nparams >= 1024)
{
plpgsql_error_lineno = yylineno;
elog(ERROR, "too many variables specified in SQL statement");
}
switch (tok) switch (tok)
{ {
case T_VARIABLE: case T_VARIABLE:
@ -1892,6 +1915,13 @@ make_fetch_stmt(void)
while ((tok = yylex()) == ',') while ((tok = yylex()) == ',')
{ {
/* Check for array overflow */
if (nfields >= 1024)
{
plpgsql_error_lineno = yylineno;
elog(ERROR, "too many INTO variables specified");
}
tok = yylex(); tok = yylex();
switch(tok) switch(tok)
{ {