[Python-Dev] buglet in long("123\0", 10)

Nick Coghlan ncoghlan at gmail.com
Thu Jan 18 13:19:55 CET 2007


Calvin Spealman wrote:
> Added a check in test_long.LongTest.test_misc() that long("123\0", 10)
> fails properly and adapted the patch to int_new to long_new. I get
> this weird feeling that if its impossible for the function
> (PyLong_FromString) to know if its being given bad data, having know
> way to know if the string is supposed to continue past the zero-byte,
> then doesn't it make sense to say that the function by design is
> broken?

It makes sense to say the function is being misused in this case - it's 
designed to convert *C* strings to PyLong objects, so the assumption 
that there are no embedded NULs is a valid one. That said, I think a 
better patch for 2.6 would be to provide a separate PyLong_FromPyString 
function which did the embedded NULL check (and update abstract.c to use 
that instead of its own internal function).

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://www.boredomandlaziness.org


More information about the Python-Dev mailing list