Cure for segmentation fault in libpq

Started by Oliver Elphickalmost 28 years ago2 messages
#1Oliver Elphick
olly@lfix.co.uk

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

#2Bruce Momjian
maillist@candle.pha.pa.us
In reply to: Oliver Elphick (#1)
Re: [HACKERS] Cure for segmentation fault in libpq

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)