Custom extension revision.
[openssl.git] / ssl / ssl_cert.c
index f0035d768dbe3a7ad3fe435333e50ecbd194170c..b5098eb996f84933c0e3730109cf3aada1abbf87 100644 (file)
@@ -435,24 +435,10 @@ CERT *ssl_cert_dup(CERT *cert)
        ret->ciphers_raw = NULL;
 
 #ifndef OPENSSL_NO_TLSEXT
-       if (cert->custom_cli_ext_records_count)
-               {
-               ret->custom_cli_ext_records = BUF_memdup(cert->custom_cli_ext_records, sizeof(custom_cli_ext_record) * cert->custom_cli_ext_records_count);
-               if (ret->custom_cli_ext_records == NULL)
-                       goto err;
-               ret->custom_cli_ext_records_count =
-                                       cert->custom_cli_ext_records_count;
-               }
-
-       if (cert->custom_srv_ext_records_count)
-               {
-               ret->custom_srv_ext_records = BUF_memdup(cert->custom_srv_ext_records, sizeof(custom_srv_ext_record) * cert->custom_srv_ext_records_count);
-               if (ret->custom_srv_ext_records == NULL)
-                       goto err;
-               ret->custom_srv_ext_records_count =
-                                       cert->custom_srv_ext_records_count;
-               }
-
+       if (!custom_exts_copy(&ret->cli_ext, &cert->cli_ext))
+               goto err;
+       if (!custom_exts_copy(&ret->srv_ext, &cert->srv_ext))
+               goto err;
 #endif
 
        return(ret);
@@ -474,10 +460,8 @@ err:
 #endif
 
 #ifndef OPENSSL_NO_TLSEXT
-       if (ret->custom_cli_ext_records)
-               OPENSSL_free(ret->custom_cli_ext_records);
-       if (ret->custom_srv_ext_records)
-               OPENSSL_free(ret->custom_srv_ext_records);
+       custom_exts_free(&ret->cli_ext);
+       custom_exts_free(&ret->srv_ext);
 #endif
 
        ssl_cert_clear_certs(ret);
@@ -571,10 +555,8 @@ void ssl_cert_free(CERT *c)
        if (c->ciphers_raw)
                OPENSSL_free(c->ciphers_raw);
 #ifndef OPENSSL_NO_TLSEXT
-       if (c->custom_cli_ext_records)
-               OPENSSL_free(c->custom_cli_ext_records);
-       if (c->custom_srv_ext_records)
-               OPENSSL_free(c->custom_srv_ext_records);
+       custom_exts_free(&c->cli_ext);
+       custom_exts_free(&c->srv_ext);
 #endif
        OPENSSL_free(c);
        }