File gsoap-sslverify.diff of Package gsoap

From: Jan Engelhardt <jengelh@inai.de>
References: https://sourceforge.net/p/gsoap2/patches/168/

When verification of a certificate has failed, do not just leave soap->msgbuf
at the default openssl message ("certificate validation failed" or so), but
append the detailed error message from the verification stage as well.

---
 gsoap/stdsoap2.cpp |    7 +++++++
 1 file changed, 7 insertions(+)

Index: gsoap-2.8.43/gsoap/stdsoap2.cpp
===================================================================
--- gsoap-2.8.43.orig/gsoap/stdsoap2.cpp
+++ gsoap-2.8.43/gsoap/stdsoap2.cpp
@@ -3672,6 +3672,13 @@ soap_ssl_error(struct soap *soap, int re
     while ((r = ERR_get_error()))
     { size_t l = strlen(soap->msgbuf);
       ERR_error_string_n(r, soap->msgbuf + l, sizeof(soap->msgbuf) - l);
+      l = strlen(soap->msgbuf);
+      if (l + 1 < sizeof(soap->msgbuf))
+        soap->msgbuf[l++] = '\n';
+      if (ERR_GET_REASON(r) == SSL_R_CERTIFICATE_VERIFY_FAILED && l <= sizeof(soap->msgbuf)) {
+        const char *reason = X509_verify_cert_error_string(SSL_get_verify_result(soap->ssl));
+        (SOAP_SNPRINTF(soap->msgbuf + l, sizeof(soap->msgbuf) - l, strlen(reason)), "%s", reason);
+      }
     }
   }
   else
openSUSE Build Service is sponsored by