Re: Problem with setlocale (found in libecpg) [accessing a
От | Bruce Momjian |
---|---|
Тема | Re: Problem with setlocale (found in libecpg) [accessing a |
Дата | |
Msg-id | 200109262022.f8QKM7K01840@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Problem with setlocale (found in libecpg) [accessing a memory location after freeing it] (Christof Petig <christof@petig-baender.de>) |
Ответы |
Re: Problem with setlocale (found in libecpg) [accessing a
|
Список | pgsql-patches |
Your patch has been added to the PostgreSQL unapplied patches list at: http://candle.pha.pa.us/cgi-bin/pgpatches I will try to apply it within the next 48 hours. > Hello, > > well at first I could not believe what I was seeing ... > > Look at the following code (ecpg/lib/execute.c): > > const char *locale=setlocale(LC_NUMERIC, NULL); > setlocale(LC_NUMERIC, "C"); > [....] > setlocale(LC_NUMERIC, locale); > > > Well at least on glibc-2.2 it seems that setlocale retuns a pointer to > malloced memory, and frees this pointer on subsequent calls to > setlocale. This is standard conformant and has good reasons. But used as > above it is lethal (but not lethal enough to be easily recognized). So > the content locale points to is freed by the second call to setlocale. > > The remedy is easy (given that _no other_ call to setlocale happens > inbetween ...) > > const char *locale=setlocale(LC_NUMERIC, "C"); > [...] > setlocale(LC_NUMERIC, locale); > > > So I would kindly ask you to take a second look at every invokation of > setlocale. And to apply the following patch. > > Yours > Christof > [ application/x-gzip is not supported, skipping... ] > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/users-lounge/docs/faq.html -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
В списке pgsql-patches по дате отправления: