]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
OpenSSL: force meth->name as non-const when we free() it
authorEmmanuel Deloget <logout@free.fr>
Mon, 12 Jun 2017 13:43:30 +0000 (15:43 +0200)
committerGert Doering <gert@greenie.muc.de>
Sun, 18 Jun 2017 11:40:38 +0000 (13:40 +0200)
We are in control of meth->name (we string_alloc() it in RSA_meth_new())
so we know that we can free() it when it's no longer needed. Yet we have
to force the value to be non-const to avoid a compiler warning -- due to
the fact that OpenSSL defines the value as a const char*, regardless of
its origin.

Acked-by: Steffan Karger <steffan.karger@fox-it.com>
Message-Id: <20170612134330.20971-9-logout@free.fr>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg14798.html

Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/openssl_compat.h

index 729fab6c56f81a3f59c0b298be75d88cb260dd0a..eeacb525dedd5893bf85a82de8cb4c60915949f2 100644 (file)
@@ -349,7 +349,13 @@ RSA_meth_free(RSA_METHOD *meth)
 {
     if (meth)
     {
-        free(meth->name);
+        /* OpenSSL defines meth->name to be a const pointer, yet we
+         * feed it with an allocated string (from RSA_meth_new()).
+         * Thus we are allowed to free it here. In order to avoid a
+         * "passing 'const char *' to parameter of type 'void *' discards
+         * qualifiers" warning, we force the pointer to be a non-const value.
+         */
+        free((char *)meth->name);
         free(meth);
     }
 }