Custom extension revision.
Use the same structure for client and server custom extensions.
Add utility functions in new file t1_ext.c.
Use new utility functions to handle custom server and client extensions
and remove a lot of code duplication.
Reviewed-by: Emilia Käsper <emilia@openssl.org>
(cherry picked from commit ecf4d66090
)
Conflicts:
ssl/ssl_lib.c
ssl/ssl_locl.h
ssl/t1_lib.c
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user