PDO_FIREBIRD isc_interprete and fb_interpret

[email protected] (Paul Reeves) Thu, 3 Mar 2011 15:36:01 +0100
Newsgroups php.pdo
Organization IBPhoenix
Message-ID <[email protected]>
Something that has been bugging me for a long time is the use of 
isc_interprete in the pdo_firebird driver. This call is used to parse the 
error array and output error messages. It is vulnerable to a buffer overflow 
and has been deprecated by the Firebird project for quite a while now. It has 
been replaced by fb_interpret which takes a third parameter specifying the 
size of the buffer. Unfortunately the interbase guys have done nothing to fix 
this on their side.

What is the correct course of action? :

1/ Replace isc_interprete entirely with fb_interpret. 
This breaks support in pdo_firebird for interbase. (But hey, this is the 
pdo_firebird driver.)

2/ Determine at runtime if fb_interpret is available and use it. Otherwise 
fall back to isc_interprete.
I've tried coding that and it works, although it is a bit messy. However, I'm 
not wild about trying to test for a function's existence in the middle of 
throwing an error.

3/ Hard-code the function at compile time. By default it would use 
fb_interpret but a user could compile for isc_interprete if required. Although 
clunky this would at least allow us to remove an attack vector from regular 
builds while providing some support for interbase users. 

Thoughts?



Paul
-- 
Paul Reeves
http://www.ibphoenix.com
Specialists in Firebird support