postgres.git / summary / log / commit / refs

commit    131e545ac304a3f5c4f8575131f4b338232cac0d
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Tue Jun 25 02:16:04 2019 +0000
First released in: 10.10, 11.5

    Fix thinkos in LookupFuncName() for function name lookups
    
    This could trigger valgrind failures when doing ambiguous function name
    lookups when no arguments are provided by the caller.  The problem has
    been introduced in aefeb68, so backpatch to v10.  HEAD is fine thanks to
    the refactoring done in bfb456c1.
    
    Reported-by: Alexander Lakhin
    Author: Alexander Lakhin, Michael Paquier
    Discussion: https://postgr.es/m/3d068be5-f617-a5ee-99f6-458a407bfd65@gmail.com
    Backpatch-through: 10


src/backend/parser/parse_func.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c index 8487edaa958..25ae4e59490 100644 --- a/src/backend/parser/parse_func.c +++ b/src/backend/parser/parse_func.c @@ -1950,9 +1950,10 @@ LookupFuncName(List *funcname, int nargs, const Oid *argtypes, bool noError) errmsg("function name \"%s\" is not unique", NameListToString(funcname)), errhint("Specify the argument list to select the function unambiguously."))); + return InvalidOid; } - else - return clist->oid; + /* Otherwise return the match */ + return clist->oid; } else { @@ -1961,9 +1962,14 @@ LookupFuncName(List *funcname, int nargs, const Oid *argtypes, bool noError) (errcode(ERRCODE_UNDEFINED_FUNCTION), errmsg("could not find a function named \"%s\"", NameListToString(funcname)))); + return InvalidOid; } } + /* + * Otherwise, look for a match to the arg types. FuncnameGetCandidates + * has ensured that there's at most one match in the returned list. + */ while (clist) { if (memcmp(argtypes, clist->args, nargs * sizeof(Oid)) == 0) [parent: 956611e4c480]