• Alexander Færøy's avatar
    Fix crash bug in PT subsystem. · aa360b25
    Alexander Færøy authored
    This patch fixes a crash bug (assertion failure) in the PT subsystem
    that could get triggered if the user cancels bootstrap via the UI in
    TorBrowser. This would cause Tor to call `managed_proxy_destroy()` which
    called `process_free()` after it had called `process_terminate()`. This
    leads to a crash when the various process callbacks returns with data
    after the `process_t` have been freed using `process_free()`.
    
    We solve this issue by ensuring that everywhere we call
    `process_terminate()` we make sure to detach the `managed_proxy_t` from
    the `process_t` (by calling `process_set_data(process, NULL)`) and avoid
    calling `process_free()` at all in the transports code. Instead we just
    call `process_terminate()` and let the process exit callback in
    `managed_proxy_exit_callback()` handle the `process_free()` call by
    returning true to the process subsystem.
    
    See: https://bugs.torproject.org/29562
    aa360b25