mirror of
https://github.com/postgres/postgres.git
synced 2025-05-18 17:41:14 +03:00
If we're gonna check for array overrun, we really should do so before
overrunning the array, not after.
This commit is contained in:
parent
5c057d4b44
commit
d60b1f5689
@ -4,7 +4,7 @@
|
|||||||
* procedural language
|
* procedural language
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.48.2.2 2005/02/07 03:55:28 neilc Exp $
|
* $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.48.2.3 2005/02/08 18:22:11 tgl Exp $
|
||||||
*
|
*
|
||||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||||
*
|
*
|
||||||
@ -1699,6 +1699,16 @@ 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;
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
|
||||||
|
errmsg("too many variables specified in SQL statement")));
|
||||||
|
}
|
||||||
|
|
||||||
switch (tok)
|
switch (tok)
|
||||||
{
|
{
|
||||||
case T_VARIABLE:
|
case T_VARIABLE:
|
||||||
@ -1711,15 +1721,6 @@ read_sql_construct(int until,
|
|||||||
plpgsql_dstring_append(&ds, yytext);
|
plpgsql_dstring_append(&ds, yytext);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for array overflow */
|
|
||||||
if (nparams >= 1024)
|
|
||||||
{
|
|
||||||
plpgsql_error_lineno = lno;
|
|
||||||
ereport(ERROR,
|
|
||||||
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
|
|
||||||
errmsg("too many variables specified in SQL statement")));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
expr = malloc(sizeof(PLpgSQL_expr) + sizeof(int) * nparams - sizeof(int));
|
expr = malloc(sizeof(PLpgSQL_expr) + sizeof(int) * nparams - sizeof(int));
|
||||||
@ -1924,6 +1925,16 @@ 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 = plpgsql_scanner_lineno();
|
||||||
|
ereport(ERROR,
|
||||||
|
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
|
||||||
|
errmsg("too many variables specified in SQL statement")));
|
||||||
|
}
|
||||||
|
|
||||||
switch (tok)
|
switch (tok)
|
||||||
{
|
{
|
||||||
case T_VARIABLE:
|
case T_VARIABLE:
|
||||||
@ -1936,15 +1947,6 @@ make_select_stmt(void)
|
|||||||
plpgsql_dstring_append(&ds, yytext);
|
plpgsql_dstring_append(&ds, yytext);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for array overflow */
|
|
||||||
if (nparams >= 1024)
|
|
||||||
{
|
|
||||||
plpgsql_error_lineno = plpgsql_scanner_lineno();
|
|
||||||
ereport(ERROR,
|
|
||||||
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
|
|
||||||
errmsg("too many variables specified in SQL statement")));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
expr = malloc(sizeof(PLpgSQL_expr) + sizeof(int) * nparams - sizeof(int));
|
expr = malloc(sizeof(PLpgSQL_expr) + sizeof(int) * nparams - sizeof(int));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user