mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-03 03:46:56 +02:00
Wrong boundary condition on number-of-args check.
This commit is contained in:
parent
cc2e19ef9a
commit
fa3aa5e1bb
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.38 2000/01/11 02:30:05 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.39 2000/01/11 05:22:25 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -80,8 +80,9 @@ ProcedureCreate(char *procedureName,
|
|||||||
{
|
{
|
||||||
Value *t = lfirst(x);
|
Value *t = lfirst(x);
|
||||||
|
|
||||||
if (parameterCount > FUNC_MAX_ARGS)
|
if (parameterCount >= FUNC_MAX_ARGS)
|
||||||
elog(ERROR, "Procedures cannot take more than %d arguments",FUNC_MAX_ARGS);
|
elog(ERROR, "Procedures cannot take more than %d arguments",
|
||||||
|
FUNC_MAX_ARGS);
|
||||||
|
|
||||||
if (strcmp(strVal(t), "opaque") == 0)
|
if (strcmp(strVal(t), "opaque") == 0)
|
||||||
{
|
{
|
||||||
@ -172,7 +173,6 @@ ProcedureCreate(char *procedureName,
|
|||||||
elog(ERROR, "ProcedureCreate: sql functions cannot return type \"opaque\"");
|
elog(ERROR, "ProcedureCreate: sql functions cannot return type \"opaque\"");
|
||||||
typeObjectId = 0;
|
typeObjectId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
typeObjectId = TypeGet(returnTypeName, &defined);
|
typeObjectId = TypeGet(returnTypeName, &defined);
|
||||||
@ -192,7 +192,6 @@ ProcedureCreate(char *procedureName,
|
|||||||
returnTypeName);
|
returnTypeName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (!defined)
|
else if (!defined)
|
||||||
{
|
{
|
||||||
elog(NOTICE, "ProcedureCreate: return type '%s' is only a shell",
|
elog(NOTICE, "ProcedureCreate: return type '%s' is only a shell",
|
||||||
@ -266,30 +265,18 @@ ProcedureCreate(char *procedureName,
|
|||||||
values[i++] = NameGetDatum(&procname);
|
values[i++] = NameGetDatum(&procname);
|
||||||
values[i++] = Int32GetDatum(GetUserId());
|
values[i++] = Int32GetDatum(GetUserId());
|
||||||
values[i++] = ObjectIdGetDatum(languageObjectId);
|
values[i++] = ObjectIdGetDatum(languageObjectId);
|
||||||
|
|
||||||
/* XXX isinherited is always false for now */
|
/* XXX isinherited is always false for now */
|
||||||
|
|
||||||
values[i++] = Int8GetDatum((bool) 0);
|
values[i++] = Int8GetDatum((bool) 0);
|
||||||
|
|
||||||
/* XXX istrusted is always false for now */
|
|
||||||
|
|
||||||
values[i++] = Int8GetDatum(trusted);
|
values[i++] = Int8GetDatum(trusted);
|
||||||
values[i++] = Int8GetDatum(canCache);
|
values[i++] = Int8GetDatum(canCache);
|
||||||
values[i++] = UInt16GetDatum(parameterCount);
|
values[i++] = UInt16GetDatum(parameterCount);
|
||||||
values[i++] = Int8GetDatum(returnsSet);
|
values[i++] = Int8GetDatum(returnsSet);
|
||||||
values[i++] = ObjectIdGetDatum(typeObjectId);
|
values[i++] = ObjectIdGetDatum(typeObjectId);
|
||||||
|
|
||||||
values[i++] = (Datum) typev;
|
values[i++] = (Datum) typev;
|
||||||
|
|
||||||
/*
|
|
||||||
* The following assignments of constants are made. The real values
|
|
||||||
* will have to be extracted from the arglist someday soon.
|
|
||||||
*/
|
|
||||||
values[i++] = Int32GetDatum(byte_pct); /* probyte_pct */
|
values[i++] = Int32GetDatum(byte_pct); /* probyte_pct */
|
||||||
values[i++] = Int32GetDatum(perbyte_cpu); /* properbyte_cpu */
|
values[i++] = Int32GetDatum(perbyte_cpu); /* properbyte_cpu */
|
||||||
values[i++] = Int32GetDatum(percall_cpu); /* propercall_cpu */
|
values[i++] = Int32GetDatum(percall_cpu); /* propercall_cpu */
|
||||||
values[i++] = Int32GetDatum(outin_ratio); /* prooutin_ratio */
|
values[i++] = Int32GetDatum(outin_ratio); /* prooutin_ratio */
|
||||||
|
|
||||||
values[i++] = (Datum) fmgr(F_TEXTIN, prosrc); /* prosrc */
|
values[i++] = (Datum) fmgr(F_TEXTIN, prosrc); /* prosrc */
|
||||||
values[i++] = (Datum) fmgr(F_TEXTIN, probin); /* probin */
|
values[i++] = (Datum) fmgr(F_TEXTIN, probin); /* probin */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user