mirror of
https://github.com/postgres/postgres.git
synced 2025-06-29 10:41:53 +03:00
Limit max parameter number with MaxAllocSize
MaxAllocSize puts an upper bound on the largest possible parameter number ($268435455). Use that limit instead of INT_MAX to report that no parameters exist beyond that point instead of reporting an error about the maximum allocation size being exceeded. Author: Erik Wienhold <ewie@ewie.name> Discussion: https://www.postgresql.org/message-id/flat/5d216d1c-91f6-4cbe-95e2-b4cbd930520c@ewie.name
This commit is contained in:
@ -31,6 +31,7 @@
|
||||
#include "parser/parse_param.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/lsyscache.h"
|
||||
#include "utils/memutils.h"
|
||||
|
||||
|
||||
typedef struct FixedParamState
|
||||
@ -136,7 +137,7 @@ variable_paramref_hook(ParseState *pstate, ParamRef *pref)
|
||||
Param *param;
|
||||
|
||||
/* Check parameter number is in range */
|
||||
if (paramno <= 0 || paramno > INT_MAX / sizeof(Oid))
|
||||
if (paramno <= 0 || paramno > MaxAllocSize / sizeof(Oid))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_UNDEFINED_PARAMETER),
|
||||
errmsg("there is no parameter $%d", paramno),
|
||||
|
Reference in New Issue
Block a user