My Contributions to Free Softwares

First, see my projects.

Contributions in 2014

Contributions to Python

Major work

  • Python 3.6:
  • Python 3.5:
    • I added the following functions: os.get_blocking(fd) and os.set_blocking(fd). See issue #22054: Add os.get_blocking() and os.set_blocking() functions. I added these functions because it’s a common pattern in applications and signal.set_wakeup_fd() now raises an exception if the fd is blocking (I also added this check).
    • I worked with Charles-François Natali to implement the PEP 475: “Retry system calls failing with EINTR”. The implementation was much more complex than expected, like the implementation of socket.connect() which requires many syscalls (I refactored Modules/socketmodule.c for that).
    • I wrote the first version of the PEP 460 (bytes % args), then rewritten by Antoine Pitrou, to be later superseeded by the PEP 461 written by Ethan Furman.
    • I helped Ben Hoyt to implement, test and benchmark his PEP 471 (os.scandir)
    • On Windows, signal.set_wakeup_fd() now also supports socket handles.
    • The time.monotonic() function is now always available.
    • New API for C memory allocators to support also calloc()
    • The __name__ attribute of generator is now set from the function name, instead of being set from the code name. Use gen.gi_code.co_name to retrieve the code name. Generators also have a new __qualname__ attribute, the qualified name, which is now used for the representation of a generator (repr(gen)).
    • New private _PyTime API to handle timestamps with a resolution of 1 nanosecond.
    • os.urandom() now uses getrandom() on Linux 3.17 and newer, and getentropy() on OpenBSD 5.6 and newer.
    • New private _Py_CheckFunctionResult() function to ensure that the C API is used correctly when calling a C function.
    • Enhance Py_FatalError()
      • Display the current Python stack if an exception was raised but the exception has no traceback
      • Disable faulthandler if an exception was raised (before it was only disabled if no exception was raised)
      • To display the current Python stack, call PyGILState_GetThisThreadState() which works even if the GIL was released
      • Try to flush stdout and stderr.
    • Issue #23353: complex bug related to exception handling with generators
  • Python 3.4:
  • Python 3.3:
    • new faulthandler module
    • new time functions: time.monotonic, time.perf_counter, time.process_time (PEP 418)
  • Unicode support: most work done during development of Python 3.1-3.3
  • Early work on Unicode before Python 3 in the “Python 3000” branch
  • Fuzzing

Old contributions to Python

Accepted patches:

Pending patches:

Old Work (2004-2008)

First, see my old projects.

Accepted patches in other projects

INL/EdenWall

During my work at INL/EdenWall, I contributed to many open source softwares:

Security vulnerabilities:

  • 2007-05-22: CVE-2007-2754: FreeType Integer Overflow in TT_Load_Simple_Glyph()
  • 2007-05-11: CVE-2007-2650: ClamAV OLE2 Parser Denial of Service
  • 2007-05-10: CVE-2007-2645: Libexif Integer Overflow Vulnerability in exif_data_load_data_entry()

Fuzzing

Thanks to my project Fusil, I found and sometimes fixed many bugs in various softwares. See the list of crashes found by Fusil.

Bug reports

Fixed:

Open:

Other

  • I contributed to some articles on the french Wikipedia, like: Sténographie.