[Openvpn-devel,v1] Use openssl_err_t typedef to deal with difference between TLS libraries
Commit Message
From: Arne Schwabe <arne@rfc2549.org>
AWS-LC and OpenSSL disagree on the type of that errors are reported in.
Instead of having a lot of glue code and casting back and forth, use a
typedef to always use the right type.
Change-Id: I4adbdf0c8b82fd7de309aa5f6f3b0c8157c5ffe7
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1578
---
This change was reviewed on Gerrit and approved by at least one
developer. I request to merge it to master.
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1578
This mail reflects revision 1 of this Change.
Acked-by according to Gerrit (reflected above):
Frank Lichtenheld <frank@lichtenheld.com>
Comments
Looks reasonable, has ACK from Frank, and is so localized that it makes
sense to include this in 2.7 - "long term compatibility" things.
Lightly tested the 2.7 change on an linux/openssl build.
Your patch has been applied to the master and release/2.7 branch.
commit ee2af6655d1dae8b87d8128e2afeec4f5506d79b (master)
commit ca6c9a8886918ae85fe3295a920eace480aa3971 (release/2.7)
Author: Arne Schwabe
Date: Sun Mar 22 12:11:15 2026 +0100
Use openssl_err_t typedef to deal with difference between TLS libraries
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1578
Message-Id: <20260322111131.8251-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg36242.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
--
kind regards,
Gert Doering
@@ -229,7 +229,7 @@
void
crypto_print_openssl_errors(const unsigned int flags)
{
- unsigned long err = 0;
+ openssl_err_t err = 0;
int line, errflags;
const char *file, *data, *func;
@@ -45,6 +45,15 @@
#include <openssl/x509.h>
#include <openssl/err.h>
+/* Define the type of error. This is something that is less
+ * intrusive than casts everywhere */
+#if defined(OPENSSL_IS_AWSLC)
+typedef uint32_t openssl_err_t;
+#else
+typedef unsigned long openssl_err_t;
+#endif
+
+
/* Functionality missing in 1.1.0 */
#if OPENSSL_VERSION_NUMBER < 0x10101000L && !defined(ENABLE_CRYPTO_WOLFSSL)
#define SSL_CTX_set1_groups SSL_CTX_set1_curves
@@ -157,12 +166,12 @@
/* OpenSSL 1.1.1 and lower use only const EVP_MD, nothing to free */
}
-static inline unsigned long
+static inline openssl_err_t
ERR_get_error_all(const char **file, int *line, const char **func, const char **data, int *flags)
{
static const char *empty = "";
*func = empty;
- unsigned long err = ERR_get_error_line_data(file, line, data, flags);
+ openssl_err_t err = ERR_get_error_line_data(file, line, data, flags);
return err;
}