PDO_FIREBIRD patch to improve firebird_handle_get_attribute
| From: | Paul Reeves | Date: | Tue, 16 Nov 2010 15:42:22 +0000 |
| Subject: | PDO_FIREBIRD patch to improve firebird_handle_get_attribute | ||
| Groups: | php.pdo | ||
| Request: | Send a blank email to pdo+get-486@lists.php.net to get a copy of this message | ||
There is a bug and a few omissions in firebird_handle_get_attribute.
Most significantly it declares tmp[200] which is used to store the server
version. Unfortunately, a typical server version string is now over 300 bytes
long. So this call just blows the driver out of the water, leaves this error
in the apache log:
*** stack smashing detected ***: /usr/sbin/httpd2-prefork terminated
[Tue Nov 16 13:42:53 2010] [notice] child pid 11656 exit signal Segmentation
fault (11)
and the user is staring at a server timeout error in the browser. This is
easily fixed by declaring tmp[] to be larger.
Less seriously, these attributes are not handled:
PDO_ATTR_PREFETCH,
PDO_ATTR_TIMEOUT,
PDO_ATTR_FETCH_TABLE_NAMES
so if they are called outside a try..catch then the call will fail badly. It
is not obvious that a try..catch should be required so it is probably better
to just hand these cases in the driver.
I've attached a patch which fixes all of these issues.
Paul
--
Paul Reeves
http://www.ibphoenix.com
Specialists in Firebird support
Attachment: [text/x-patch] php-5.3.3-pdo_firebird_driver_attributes.patch
Attachment: [text/x-patch] php-5.3.3-pdo_firebird_driver_attributes.patch