Bug #12381
closedext/openssl classes' dup/clone don't work well
Description
They don't copy the underlying C level structures.
ssl_ctx = OpenSSL::SSL::SSLContext.new
ssl_ctx.ciphers = "aNULL"
p ssl_ctx.ciphers
# => [["ADH-AES256-GCM-SHA384", "TLSv1.2", 256, 256], .. aNULL cipher suites ..]
new_ctx = ssl_ctx.dup
p new_ctx.ciphers
# => [["ECDHE-ECDSA-AES256-GCM-SHA384", "TLSv1.2", 256, 256], .. the default cipher suites ..]
Files
        
           Updated by Anonymous over 9 years ago
          Updated by Anonymous over 9 years ago
          
          
        
        
      
      - Status changed from Open to Closed
Applied in changeset r55454.
openssl: implement initialize_copy method for PKey classes
- 
ext/openssl/ossl_pkey_dh.c, ext/openssl/ossl_pkey_dsa.c, 
 ext/openssl/ossl_pkey_ec.c, ext/openssl/ossl_pkey_rsa.c: Implement
 initialize_copy method for OpenSSL::PKey::*.
 [ruby-core:75504] [Bug #12381]
- 
test/openssl/test_pkey_dh.rb, test/openssl/test_pkey_dsa.rb, 
 test/openssl/test_pkey_ec.rb, test/openssl/test_pkey_rsa.rb: Test they
 actually copy the OpenSSL objects, and modifications to cloned object
 don't affect the original object.
        
           Updated by usa (Usaku NAKAMURA) about 9 years ago
          Updated by usa (Usaku NAKAMURA) about 9 years ago
          
          
        
        
      
      - Backport changed from 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.1: WONTFIX, 2.2: REQUIRED, 2.3: REQUIRED
        
           Updated by Tietew (Toru Iwase) about 9 years ago
          Updated by Tietew (Toru Iwase) about 9 years ago
          
          
        
        
      
      SSLContext#dup is not fixed yet?
$ RBENV_VERSION=2.4.0-dev ruby -v -ropenssl -e 'c = OpenSSL::SSL::SSLContext.new; c.ciphers = "aNULL"; p c.ciphers == c.dup.ciphers'
ruby 2.4.0dev (2016-08-03 trunk 55810) [x86_64-linux]
false
        
           Updated by rhenium (Kazuki Yamaguchi) about 9 years ago
          Updated by rhenium (Kazuki Yamaguchi) about 9 years ago
          
          
        
        
      
      - File 0001-Implement-missing-initialize_copy.patch 0001-Implement-missing-initialize_copy.patch added
Thanks for reminding me.
I've just fixed the remaining at ruby/openssl (GitHub):
https://github.com/ruby/openssl/commit/6dc9b914cae52c8af6e1b4d1156613bcd914eaf5
Attached is the patch against 2.3 branch.