]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Report file and line when converting OpenSSL errors
authorMark Andrews <marka@isc.org>
Sun, 7 Aug 2022 11:41:18 +0000 (21:41 +1000)
committerMark Andrews <marka@isc.org>
Mon, 3 Apr 2023 02:06:04 +0000 (12:06 +1000)
This provides more detail about which instance of specific OpenSSL
calls that have failed by reporting the file name and line numbers
involved when dst__openssl_toresult2 and dst__openssl_toresult3 are
called.

lib/dns/dst_openssl.h
lib/dns/openssl_link.c

index ad13770632854cdc5f1d73a1ec676716d943b147..b7541fd0e6dc61486decd9f74a773e0ee4efa91b 100644 (file)
@@ -29,12 +29,17 @@ ISC_LANG_BEGINDECLS
 isc_result_t
 dst__openssl_toresult(isc_result_t fallback);
 
+#define dst__openssl_toresult2(A, B) \
+       dst___openssl_toresult2(A, B, __FILE__, __LINE__)
 isc_result_t
-dst__openssl_toresult2(const char *funcname, isc_result_t fallback);
+dst___openssl_toresult2(const char *funcname, isc_result_t fallback,
+                       const char *file, int line);
 
+#define dst__openssl_toresult3(A, B, C) \
+       dst___openssl_toresult3(A, B, C, __FILE__, __LINE__)
 isc_result_t
-dst__openssl_toresult3(isc_logcategory_t *category, const char *funcname,
-                      isc_result_t fallback);
+dst___openssl_toresult3(isc_logcategory_t *category, const char *funcname,
+                       isc_result_t fallback, const char *file, int line);
 
 #if !defined(OPENSSL_NO_ENGINE) && OPENSSL_API_LEVEL < 30000
 ENGINE *
index 815ee32311e4bfdd14694738135bb3d51723f985..3e624d57105ce8ec70a694d9083c372ec695039a 100644 (file)
@@ -175,24 +175,26 @@ dst__openssl_toresult(isc_result_t fallback) {
 }
 
 isc_result_t
-dst__openssl_toresult2(const char *funcname, isc_result_t fallback) {
-       return (dst__openssl_toresult3(DNS_LOGCATEGORY_GENERAL, funcname,
-                                      fallback));
+dst___openssl_toresult2(const char *funcname, isc_result_t fallback,
+                       const char *file, int line) {
+       return (dst___openssl_toresult3(DNS_LOGCATEGORY_GENERAL, funcname,
+                                       fallback, file, line));
 }
 
 isc_result_t
-dst__openssl_toresult3(isc_logcategory_t *category, const char *funcname,
-                      isc_result_t fallback) {
+dst___openssl_toresult3(isc_logcategory_t *category, const char *funcname,
+                       isc_result_t fallback, const char *file, int line) {
        isc_result_t result;
        unsigned long err;
-       const char *file, *func, *data;
-       int line, flags;
+       const char *func, *data;
+       int flags;
        char buf[256];
 
        result = toresult(fallback);
 
        isc_log_write(dns_lctx, category, DNS_LOGMODULE_CRYPTO, ISC_LOG_WARNING,
-                     "%s failed (%s)", funcname, isc_result_totext(result));
+                     "%s (%s:%d) failed (%s)", funcname, file, line,
+                     isc_result_totext(result));
 
        if (result == ISC_R_NOMEMORY) {
                goto done;