diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-03-31 15:36:35 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-03-31 15:36:35 +0900 |
commit | 565a9e9fe31b8136f8a2b126320be8d92ca25b98 (patch) | |
tree | 3763c1e02e54c7d0f1242c5912ae407eb74fbddb | |
parent | b42cf0acbaf46e1b8eb1901711037f421f5b6852 (diff) | |
download | ruby-openssl-565a9e9fe31b8136f8a2b126320be8d92ca25b98.tar.gz |
ssl: check return value of SSL_set_fd()
SSL_set_fd() may fail with 0 return if malloc() fails. Check that and
raise an exception to avoid potential crash.
-rw-r--r-- | ext/openssl/ossl_ssl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index eef7dbec..e2c8eb5e 100644 --- a/ext/openssl/ossl_ssl.c +++ b/ext/openssl/ossl_ssl.c @@ -1483,7 +1483,8 @@ ossl_ssl_setup(VALUE self) GetOpenFile(io, fptr); rb_io_check_readable(fptr); rb_io_check_writable(fptr); - SSL_set_fd(ssl, TO_SOCKET(FPTR_TO_FD(fptr))); + if (!SSL_set_fd(ssl, TO_SOCKET(FPTR_TO_FD(fptr)))) + ossl_raise(eSSLError, "SSL_set_fd"); return Qtrue; } |