Re: Sloppiness around failure handling of parsePGArray in pg_dump - Mailing list pgsql-hackers

From Daniel Gustafsson
Subject Re: Sloppiness around failure handling of parsePGArray in pg_dump
Date
Msg-id 980DBA84-8288-4541-8E54-C10396B6D09C@yesql.se
Whole thread Raw
In response to Re: Sloppiness around failure handling of parsePGArray in pg_dump  (Michael Paquier <michael@paquier.xyz>)
List pgsql-hackers
> On 19 Nov 2020, at 02:37, Michael Paquier <michael@paquier.xyz> wrote:
>
> On Wed, Nov 18, 2020 at 10:19:40AM +0100, Daniel Gustafsson wrote:
>> I agree that we should fix this even if it will have quite limited impact in
>> production settings.  Patch LGTM, +1.
>
> Thanks.  I have reviewed that again this morning and applied it.
>
>> Another thing caught my eye here (while not the fault of this patch), we ensure
>> to clean up array leftover in case of parsePGArray failure, but we don't clean
>> up the potential allocations from the previous calls.  Something like the below
>> seems more consistent.
>>
>> @@ -12105,6 +12099,8 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
>>                        nitems != nallargs)
>>                {
>>                        pg_log_warning("could not parse proargmodes array");
>> +                       if (allargtypes)
>> +                               free(allargtypes);
>>                        if (argmodes)
>>                                free(argmodes);
>>                        argmodes = NULL;
>> @@ -12119,6 +12115,10 @@ dumpFunc(Archive *fout, FuncInfo *finfo)
>>                        nitems != nallargs)
>>                {
>>                        pg_log_warning("could not parse proargnames array");
>> +                       if (allargtypes)
>> +                               free(allargtypes);
>> +                       if (argmodes)
>> +                               free(argmodes);
>>                        if (argnames)
>>                                free(argnames);
>>                        argnames = NULL;
>
> If you do that, I think that's not completely correct either.
> format_function_arguments_old() has some logic to allow the process to
> go through for pre-8.4 dumps as long as allargtypes includes correct

Ah, yes, I read that wrong. It's correct as it is.

cheers ./daniel


pgsql-hackers by date:

Previous
From: japin
Date:
Subject: Re: Terminate the idle sessions
Next
From: Dean Rasheed
Date:
Subject: Re: Additional improvements to extended statistics