diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-29 05:55:02 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-29 05:55:02 +0000 |
commit | 0b8ad915b8c0fef1833716784dd94a0ef6caec92 (patch) | |
tree | ed014c958a0f622db02af64186def2c70e4c00ba /ext/openssl/ossl_ssl.c | |
parent | dfe11b5df4c8c37f07685da46eea7670dcb562be (diff) | |
download | ruby-0b8ad915b8c0fef1833716784dd94a0ef6caec92.tar.gz |
openssl: wrapper object before alloc
* ext/openssl: make wrapper objects before allocating structs to
get rid of potential memory leaks.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/openssl/ossl_ssl.c')
-rw-r--r-- | ext/openssl/ossl_ssl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index b006951ff5..ce8ce8935c 100644 --- a/ext/openssl/ossl_ssl.c +++ b/ext/openssl/ossl_ssl.c @@ -175,17 +175,20 @@ ossl_sslctx_s_alloc(VALUE klass) { SSL_CTX *ctx; long mode = SSL_MODE_ENABLE_PARTIAL_WRITE; + VALUE obj; #ifdef SSL_MODE_RELEASE_BUFFERS mode |= SSL_MODE_RELEASE_BUFFERS; #endif + obj = TypedData_Wrap_Struct(klass, &ossl_sslctx_type, 0); ctx = SSL_CTX_new(SSLv23_method()); if (!ctx) { ossl_raise(eSSLError, "SSL_CTX_new"); } SSL_CTX_set_mode(ctx, mode); - return TypedData_Wrap_Struct(klass, &ossl_sslctx_type, ctx); + RTYPEDDATA_DATA(obj) = ctx; + return obj; } /* |