Re: libpq not reentrant

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: libpq not reentrant
Дата
Msg-id 200201181912.g0IJCAP03030@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: libpq not reentrant  (Peter Eisentraut <peter_e@gmx.net>)
Список pgsql-bugs
Peter Eisentraut wrote:
> Bruce Momjian writes:
>
> > As of 7.2 we are only going to recommend crypt for backward
> > compatibility with older releases.  I will add a mention in libpq docs
> > that crypt authentication is not thread-safe.  Even when crypt did work
>                             ^^^^^^
> "may not be"
>
> > it wasn't always portable between OS's.  Is that how we want to go?

BSD/OS manual page says:

     The crypt() function leaves its result in an internal static object and
     returns a pointer to that object.  Subsequent calls to crypt() will modi-
     fy the same object.

     The crypt() function may not be safely called concurrently from multiple
     threads, e.g., the interfaces described by pthreads(3).

and the API is the same for all OS's.  However, I looked in the Solaris
8 crypt() manual page and found:

    http://docs.sun.com/ab2/coll.40.6/REFMAN3A/%40Ab2PageView/17377?Ab2Lang=C&Ab2Enc=iso-8859-1

    In multithreaded applications, the return value is a pointer to
    thread-specific data.

So here is at least one OS that has a thread-safe crypt, as you suggested.

I will mention crypt() relies on the OS's version of crypt(), which is
_may_not_be_ not thread-safe.  I will then recommend MD5.

--
  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-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: postgres error on debian woody
Следующее
От: Federico Di Gregorio
Дата:
Сообщение: Re: postgres error on debian woody