]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
m_ssl_openssl Verify DH params being non-NULL before setting it on the context
authorAttila Molnar <attilamolnar@hush.com>
Fri, 22 Jul 2016 10:04:35 +0000 (12:04 +0200)
committerAttila Molnar <attilamolnar@hush.com>
Fri, 22 Jul 2016 10:04:35 +0000 (12:04 +0200)
Fixes issue reported by @m4rkw on IRC

src/modules/extra/m_ssl_openssl.cpp

index 9e6472ac36582c7c934029bf7f189ed1e32f8a9d..aee7a5e3428a86afc8e2817c21fea3566aed3365 100644 (file)
@@ -405,12 +405,19 @@ class ModuleSSLOpenSSL : public Module
 #endif
 
                        ERR_clear_error();
-                       if ((SSL_CTX_set_tmp_dh(ctx, ret) < 0) || (SSL_CTX_set_tmp_dh(clictx, ret) < 0))
+                       if (ret)
                        {
-                               ServerInstance->Logs->Log("m_ssl_openssl",DEFAULT, "m_ssl_openssl.so: Couldn't set DH parameters %s. SSL errors follow:", dhfile.c_str());
-                               ERR_print_errors_cb(error_callback, this);
+                               if ((SSL_CTX_set_tmp_dh(ctx, ret) < 0) || (SSL_CTX_set_tmp_dh(clictx, ret) < 0))
+                               {
+                                       ServerInstance->Logs->Log("m_ssl_openssl", DEFAULT, "m_ssl_openssl.so: Couldn't set DH parameters %s. SSL errors follow:", dhfile.c_str());
+                                       ERR_print_errors_cb(error_callback, this);
+                               }
+                               DH_free(ret);
+                       }
+                       else
+                       {
+                               ServerInstance->Logs->Log("m_ssl_openssl", DEFAULT, "m_ssl_openssl.so: Couldn't set DH parameters %s.", dhfile.c_str());
                        }
-                       DH_free(ret);
                }
 
 #ifndef _WIN32