TLS: Fix memory leaks on tls_connection_set_params() error paths
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 31 Mar 2015 13:17:48 +0000 (16:17 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 1 Apr 2015 09:57:11 +0000 (12:57 +0300)
The internal TLS implementation started rejecting number of unsupported
configuration parameters recently, but those new error paths did not
free the allocated tlsv1_credentials buffer.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/crypto/tls_internal.c

index 19a2d5a..afd4695 100644 (file)
@@ -192,26 +192,31 @@ int tls_connection_set_params(void *tls_ctx, struct tls_connection *conn,
 
        if (params->subject_match) {
                wpa_printf(MSG_INFO, "TLS: subject_match not supported");
+               tlsv1_cred_free(cred);
                return -1;
        }
 
        if (params->altsubject_match) {
                wpa_printf(MSG_INFO, "TLS: altsubject_match not supported");
+               tlsv1_cred_free(cred);
                return -1;
        }
 
        if (params->suffix_match) {
                wpa_printf(MSG_INFO, "TLS: suffix_match not supported");
+               tlsv1_cred_free(cred);
                return -1;
        }
 
        if (params->domain_match) {
                wpa_printf(MSG_INFO, "TLS: domain_match not supported");
+               tlsv1_cred_free(cred);
                return -1;
        }
 
        if (params->openssl_ciphers) {
-               wpa_printf(MSG_INFO, "GnuTLS: openssl_ciphers not supported");
+               wpa_printf(MSG_INFO, "TLS: openssl_ciphers not supported");
+               tlsv1_cred_free(cred);
                return -1;
        }