[PHP4BETA] php4+freetds, off-by-1 truncation

Michael Peppler mpeppler at peppler.org
Fri Dec 3 21:11:34 EST 1999

rasmus at php.net writes:
 > > Ok, this one is fixed and in CVS.  Or you can patch your local copy
 > > thusly:
 > > 
 > > In src/tds/convert.c function tds_convert_any() change
 > > 
 > >    return(strlen(dest));
 > > 
 > > to 
 > > 
 > >    return (strlen(dest)+1);
 > > 
 > > What happens is PHP uses length binding, which for strings should include
 > > the null as well as the characters in the string.  So, PHP cuts off what
 > > it thinks in the NULL but is actually the last character.  sqsh and
 > > DBD::Sybase don't seem to rely on length binding and were uneffected by
 > > this bug.
 > Hrm, doesn't this mean that DBD::Sybase and sqsh are not 8-bit clean then?

No. I just use ct_bind() and let the internals do whatever they have
to. Exactly why this works for me and not for you I don't know...

Michael Peppler         -||-  Data Migrations Inc.
mpeppler at peppler.org    -||-  http://www.mbay.net/~mpeppler
Int. Sybase User Group  -||-  http://www.isug.com
Sybase on Linux mailing list: ase-linux-list at isug.com

More information about the FreeTDS mailing list