[Python-Dev] Fuzzing bugs: most bugs are closed

Victor Stinner victor.stinner at haypocalc.com
Sat Jul 19 13:23:12 CEST 2008


Hi,

I filled 14 issues about bugs found by fuzzing (see my other email "Play with 
fuzzing" for more informations). Most bugs are now closed, cool :-) Last 
bugs:


== Trivial open bugs ==

segfault on locale.gettext(None)
- http://bugs.python.org/issue3302
- attached patch is trivial: fix the PyArg_ParseTuple() to block None value,
  and reject empty domain string for bindtextdomain() (to avoid strange 
  error "OSError(0): success")

invalid ref count on locale.strcoll() error
- http://bugs.python.org/issue3303
- attached patch is trivial: add "if (rel1)"

_multiprocessing.Connection() doesn't check handle
- http://bugs.python.org/issue3321
- _multiprocessing.Connection(fd) doesn't check that fd is a valid file handle
  and so may crash on poll (the "evil" FD_SET() call)
- my patch add "|| fstat(handle, &statbuf)" to make sure that the 
  file descriptor is valid


== Complex open bugs ==

block operation on closed socket/pipe for multiprocessing
- http://bugs.python.org/issue3311
- close() method sets the file handle to -1 but most methods don't check 
  the handle and so may fail or crash. Especially poll() calls
  FD_SET((SOCKET)conn->handle, &rfds); with handle=-1 => crash.
- my patch creates a new MP error: "return MP_CLOSED_FILE;", used if handle 
  is INVALID_HANDLE_VALUE to block operations (send, receive, poll) on 
  closed files for socket and pipe.

bugs in scanstring_str() and scanstring_unicode() of _json module
- http://bugs.python.org/issue3322
- scanstring() function crashs if second argument is a big negative 
  integer. There is no attached patch because I don't understand this 
  function enough to fix it correctly, but I suggest to raise a ValueError
  if end is too small/big

invalid object destruction in re.finditer()
- or "PyObject_DEL inconsistency if pydebug option is used"
- http://bugs.python.org/issue3299
- It's the most complex bug, I prefer to write a new email :-)


== Need backport / port to python 3.0 ==

invalid call to PyMem_Free() in fileio_init()
- http://bugs.python.org/issue3304
- patch applied in Python 2.6 (trunk) but not in Python 3000:
  "i'm assuming that'll be merged into py3k automagically."
  wrote Gregory P. Smith

missing lock release in BZ2File_iternext()
- http://bugs.python.org/issue3309
- patch applied in Python 2.6 but "Needs backporting to release25-maint."
  wrote Gregory P. Smith


When all bugs will be closed, I will restart a fuzzing Python ;-) But I also 
tried with my patches and I was unable to find new bugs, great!

Victor


More information about the Python-Dev mailing list