Project

General

Profile

« Previous | Next » 

Revision 118ee2a7

Added by rhe almost 8 years ago

openssl: fix possible SEGV on race between SSLSocket#stop and #connect

  • ext/openssl/ossl_ssl.c (ossl_ssl_stop): Don't free the SSL struct
    here. Since some methods such as SSLSocket#connect releases GVL,
    there is a chance of use after free if we free the SSL from another
    thread. SSLSocket#stop was documented as "prepares it for another
    connection" so this is a slightly incompatible change. However when
    this sentence was added (r30090, Add toplevel documentation for
    OpenSSL, 2010-12-06), it didn't actually. The current behavior is
    from r40304 (Correct shutdown behavior w.r.t GC., 2013-04-15).
    [ruby-core:74978] [Bug #12292]

  • ext/openssl/lib/openssl/ssl.rb (sysclose): Update doc.

  • test/openssl/test_ssl.rb: Test this.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e