summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-03-31 15:36:35 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-03-31 15:36:35 +0900
commit565a9e9fe31b8136f8a2b126320be8d92ca25b98 (patch)
tree3763c1e02e54c7d0f1242c5912ae407eb74fbddb
parentb42cf0acbaf46e1b8eb1901711037f421f5b6852 (diff)
downloadruby-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.c3
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;
}