Re: BUG #15104: Double free in the main function in ecpg.c

Поиск
Список
Период
Сортировка
От Patrick Krecker
Тема Re: BUG #15104: Double free in the main function in ecpg.c
Дата
Msg-id CACh_hd6DHY0M0Yw4vgvUrYEwswok9bTNpJF-G8xKLP7R4CJNjQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #15104: Double free in the main function in ecpg.c  (Michael Meskes <meskes@postgresql.org>)
Ответы Re: BUG #15104: Double free in the main function in ecpg.c
Список pgsql-bugs
On Fri, Mar 9, 2018 at 8:33 AM, Michael Meskes <meskes@postgresql.org> wrote:
>> Details: In function main(), the memory hold by variable
>> output_filename is
>> freed at line 329. It then tries to parse the next command option.
>> The freed
>> memory will be freed again at line 478 if a crafted option bypass the
>> memory
>> allocation at line 316. I think set output_filename to NULL after the
>> free
>> operation at line 329 will fix the issue.
>> ...
>
> I haven't had time yet to look into this, but to speed things up, would
> you have an example where the double free actually happens?
>
> Thanks.
>
> Michael
> --
> Michael Meskes
> Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
> Meskes at (Debian|Postgresql) dot Org
> Jabber: michael at xmpp dot meskes dot org
> VfL Borussia! Força Barça! SF 49ers! Use Debian GNU/Linux, PostgreSQL
>

You can see it fairly easily by doing the following:

touch test.c;
chmod 0444 test.c;
echo "" | ./ecpg test.c -;

On my Mac I occasionally see the following:

ecpg(19715,0x7fffdd46b3c0) malloc: *** error for object
0x7fa92d402ed0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

I don't really understand how the double-free detection works, though,
and the error does not always appear.

There is a separate problem, when test.c *is* writeable and is
followed by an - (stdout) argument. In this case there is another
double free. Attached is a fix for both.

Вложения

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Thomas Munro
Дата:
Сообщение: Re: BUG #15106: The AFTER trigger is created separately on view, andthe DML operation can not trigger the trigger
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: BUG #15096: Unable to CREATE TABLE LIKE with bigint identitycolumn