Обсуждение: Cure for segmentation fault in libpq

Поиск
Список
Период
Сортировка

Cure for segmentation fault in libpq

От
"Oliver Elphick"
Дата:
I have been troubled by a segmentation fault when reloading from a dumpall.
This has been happening when a second \connect is encountered.

The faulty code was in fe-connect.c, where the memory for the user password
was freed, but the pointer itself was not set to NULL.  Later, the memory was
reused and the password appeared not to be empty, so that an attempt was
made to reference it.

Here is the patch:
diff -c postgresql-6.3.1{.orig,}/src/interfaces/libpq/fe-connect.c
*** postgresql-6.3.1.orig/src/interfaces/libpq/fe-connect.c     Thu Feb 26
04:44:59 1998
--- postgresql-6.3.1/src/interfaces/libpq/fe-connect.c  Thu Mar 26 18:45:23
1998
***************
*** 667,672 ****
--- 667,673 ----
        if (conn->pgpass != NULL)
        {
                free(conn->pgpass);
+               conn->pgpass = NULL;
        }

        return CONNECTION_OK;

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver

PGP key from public servers; key ID 32B8FAA1



Re: [HACKERS] Cure for segmentation fault in libpq

От
Bruce Momjian
Дата:
>
> I have been troubled by a segmentation fault when reloading from a dumpall.
> This has been happening when a second \connect is encountered.
>
> The faulty code was in fe-connect.c, where the memory for the user password
> was freed, but the pointer itself was not set to NULL.  Later, the memory was
> reused and the password appeared not to be empty, so that an attempt was
> made to reference it.

Applied to source tree.


--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)