Re: PGSQL ODBC driver crash in CC_get_current_schema

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: PGSQL ODBC driver crash in CC_get_current_schema
Дата
Msg-id 5526CB48.60606@iki.fi
обсуждение исходный текст
Ответ на PGSQL ODBC driver crash in CC_get_current_schema  (Frank van der Aa - Vanboxtel BV <fvdaa@vanboxtel.nl>)
Ответы Re: PGSQL ODBC driver crash in CC_get_current_schema  (Frank van der Aa - Vanboxtel BV <fvdaa@vanboxtel.nl>)
Список pgsql-odbc
On 04/08/2015 11:50 AM, Frank van der Aa - Vanboxtel BV wrote:
> Hi,
>
> we are using the PostgreSQL 9.2.4 with ODBC driver 09.03.0400.
>
> We experience a driver crash when, for some reason (e.g. insufficient
> permissions), there is no schema set.
>
> This happens because the strdup in the CC_get_current_schema function in
> connection.c is executed while the 'select current_schema()' query
> returned NULL.
>
> We have created a patch to workaround the strdup when the result of
> QR_get_value_backend_text is NULL:
>
> # diff connection.c.orig connection.c
> 4073c4073,4081
> <                               conn->current_schema =
> strdup(QR_get_value_backend_text(res, 0, 0));
> ---
>   >                       {
>   >                               const char* value =
> QR_get_value_backend_text(res, 0, 0);
>   >
>   >                               if (value == NULL)
>   > conn->current_schema = NULL;
>   >                               else
>   > conn->current_schema = strdup(value);
>   >
>   >                       }
>
> We have tested this patch in our environment and didn't experience any
> problems. However, we don't oversee the entire code, but expect this not
> to give any more problems.

Hmm. That's not a very complete fix. Not all of the callers of
CC_get_current_schema() check for a NULL, so you'll still get a segfault
in the caller in some cases. Also, the NULL current_schema value should
be cached like a valid value, otherwise the driver will call
current_schema() repeatedly.

Committed. I did those additional fixes, and added a test case to the
regression suite. Thanks for the report!

- Heikki



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

Предыдущее
От: Frank van der Aa - Vanboxtel BV
Дата:
Сообщение: PGSQL ODBC driver crash in CC_get_current_schema
Следующее
От: Lindsay Stevens
Дата:
Сообщение: Re: Re: Is it possible to set psql connection parameters before an ODBC connection?