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