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
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 |