PDO_FIREBIRD patch to improve firebird_handle_get_attribute

From: 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
« previous php.pdo (#486) next »