[OpenSIPS-Devel] [OpenSIPS/opensips] ef3518: Fix race condition between accept and write on TCP...

Bogdan Andrei IANCU noreply at github.com
Tue Apr 20 15:26:43 EST 2021


  Branch: refs/heads/master
  Home:   https://github.com/OpenSIPS/opensips
  Commit: ef3518bf2c4035821fab1c87a621182a623c3493
      https://github.com/OpenSIPS/opensips/commit/ef3518bf2c4035821fab1c87a621182a623c3493
  Author: Bogdan-Andrei Iancu <bogdan at opensips.org>
  Date:   2021-04-20 (Tue, 20 Apr 2021)

  Changed paths:
    M net/net_tcp.c

  Log Message:
  -----------
  Fix race condition between accept and write on TCP conn

Upon accepting a new TCP conn, the TCP Main is adding the conn into the hash, but the conn is initialized by the protocol just after being passed to the TCP Worker. So, for a short time (while the conn is passed from TCP Main to TCP Worker), the conn is not properly initialized, so not safe to use. And here we have the race condition, as the conn, being already in the tcp hash, it is foundable by any other process trying to do a write op. So, a process may end up trying to do a write on an not fully init tcp conn -> crash :(
The fix is to avoid "finding" in hash the uninit conns.

Closes #2258





More information about the Devel mailing list