Bug in interbase.c (Ver. 5.2.6) INVALID BLOB ID

Bug in interbase.c (Ver. 5.2.6) INVALID BLOB ID

am 27.11.2008 10:54:04 von Benjamin Schwarze

Hi!

Ay many other users recognized, there is a bug in the implementation of
the function "_php_ibase_quad_to_string". (imho since version 5.2.1)

The line "spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16,
*(ISC_UINT64*)(void *) &qd);" doesnt work as estimated. The result
stored inside qd isnt the value convertet from the string, but something
else. Normally this should work, but it doesnt.

One possible solution is, to change the line into "spprintf(&result,
BLOB_ID_LEN+1, "0x%0*x%0*x", 8, qd.gds_quad_low, 8, qd.gds_quad_high);"

Of course, this solution isnt the fine way ... but it works.

The problem occured onto a 64bit System (Fedora Core 8).

Greetings
Benjamin

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: Bug in interbase.c (Ver. 5.2.6) INVALID BLOB ID

am 27.11.2008 23:25:29 von dmagick

Benjamin Schwarze wrote:
> Hi!
>
> Ay many other users recognized, there is a bug in the implementation of
> the function "_php_ibase_quad_to_string". (imho since version 5.2.1)
>
> The line "spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16,
> *(ISC_UINT64*)(void *) &qd);" doesnt work as estimated. The result
> stored inside qd isnt the value convertet from the string, but something
> else. Normally this should work, but it doesnt.
>
> One possible solution is, to change the line into "spprintf(&result,
> BLOB_ID_LEN+1, "0x%0*x%0*x", 8, qd.gds_quad_low, 8, qd.gds_quad_high);"
>
> Of course, this solution isnt the fine way ... but it works.

If you want to discuss this sort of stuff, join the -internals list.
That's where they discuss the C code behind php.

--
Postgresql & php tutorials
http://www.designmagick.com/


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: Bug in interbase.c (Ver. 5.2.6) INVALID BLOB ID

am 28.11.2008 06:11:12 von Benjamin Schwarze

Thank you for this hint.

Chris schrieb:
> Benjamin Schwarze wrote:
>> Hi!
>>
>> Ay many other users recognized, there is a bug in the implementation
>> of the function "_php_ibase_quad_to_string". (imho since version 5.2.1)
>>
>> The line "spprintf(&result, BLOB_ID_LEN+1, "0x%0*" LL_MASK "x", 16,
>> *(ISC_UINT64*)(void *) &qd);" doesnt work as estimated. The result
>> stored inside qd isnt the value convertet from the string, but
>> something else. Normally this should work, but it doesnt.
>>
>> One possible solution is, to change the line into "spprintf(&result,
>> BLOB_ID_LEN+1, "0x%0*x%0*x", 8, qd.gds_quad_low, 8, qd.gds_quad_high);"
>>
>> Of course, this solution isnt the fine way ... but it works.
>
> If you want to discuss this sort of stuff, join the -internals list.
> That's where they discuss the C code behind php.
>

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php