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:
@ -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)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user