diff options
-rw-r--r-- | libqpdf/QPDFCrypto_openssl.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libqpdf/QPDFCrypto_openssl.cc b/libqpdf/QPDFCrypto_openssl.cc index b1866b5d..358040d5 100644 --- a/libqpdf/QPDFCrypto_openssl.cc +++ b/libqpdf/QPDFCrypto_openssl.cc @@ -2,6 +2,9 @@ #include <cstring> #include <stdexcept> +#include <string> + +#include <openssl/err.h> #include <qpdf/QIntC.hh> @@ -18,8 +21,15 @@ check_openssl(int status) { if (status != 1) { - throw std::runtime_error("openssl error"); + // OpenSSL creates a "queue" of errors; copy the first (innermost) + // error to the exception message. + char buf[256] = ""; + ERR_error_string_n(ERR_get_error(), buf, sizeof(buf)); + std::string what = "OpenSSL error: "; + what += buf; + throw std::runtime_error(what); } + ERR_clear_error(); } QPDFCrypto_openssl::QPDFCrypto_openssl() : |