Re: PGSQL ODBC driver crash in CC_get_current_schema

From: Frank van der Aa - Vanboxtel BV <fvdaa(at)vanboxtel(dot)nl>
To: hlinnaka(at)iki(dot)fi, pgsql-odbc(at)postgresql(dot)org
Subject: Re: PGSQL ODBC driver crash in CC_get_current_schema
Date: 2015-04-13 10:08:45
Message-ID: 552B95AD.4010506@vanboxtel.nl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Hi Heikki,

thank you for adding additional fixes to solve this problem.

Do you have any idea when the next official release will be that
includes this change?

Met vriendelijke groeten / Kind regards,

Frank van der Aa

Vanboxtel BV

T +31 (0) 492 327 333
F +31 (0) 492 324 326
E fvdaa(at)vanboxtel(dot)nl <mailto:fvdaa(at)vanboxtel(dot)nl>
I www.vanboxtel.nl <http://www.vanboxtel.nl/>

Heikki Linnakangas schreef op 9-4-2015 om 20:56:
> 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
>

Vanboxtel BV - Kerkstraat 4 - 5427 BC Boekel - KvK 16051676

In response to

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message Vilches, Alejandro 2015-04-16 00:30:22 Re: odbc vs. libpq performance
Previous Message Jade Koskela 2015-04-13 03:46:08 Re: crash bug on closed connection