[openssl] master update
beldmit at gmail.com
beldmit at gmail.com
Thu Sep 5 09:47:43 UTC 2019
The branch master has been updated
via 0220fc9921f0aa3aea43e6b672b8f89b3eb0261a (commit)
via 8bbc7f2211bacd201b8f2b219aad067c17b8c2ec (commit)
from 6b4152f1896e07ed94dc82663846ae9d38d4ca42 (commit)
- Log -----------------------------------------------------------------
commit 0220fc9921f0aa3aea43e6b672b8f89b3eb0261a
Author: Dmitry Belyavskiy <beldmit at gmail.com>
Date: Thu Sep 5 08:31:38 2019 +0300
Disallow change EVP_CIPHER properties once set
Reviewed-by: Richard Levitte <levitte at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9764)
commit 8bbc7f2211bacd201b8f2b219aad067c17b8c2ec
Author: Dmitry Belyavskiy <beldmit at gmail.com>
Date: Wed Sep 4 22:49:09 2019 +0300
Disallow change EVP_MD properties once set
Reviewed-by: Richard Levitte <levitte at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9764)
-----------------------------------------------------------------------
Summary of changes:
crypto/evp/cmeth_lib.c | 27 +++++++++++++++++++++++++++
crypto/evp/evp_lib.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+)
diff --git a/crypto/evp/cmeth_lib.c b/crypto/evp/cmeth_lib.c
index 34e85f6366..4d823f0f5e 100644
--- a/crypto/evp/cmeth_lib.c
+++ b/crypto/evp/cmeth_lib.c
@@ -54,18 +54,27 @@ void EVP_CIPHER_meth_free(EVP_CIPHER *cipher)
int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len)
{
+ if (cipher->iv_len != 0)
+ return 0;
+
cipher->iv_len = iv_len;
return 1;
}
int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags)
{
+ if (cipher->flags != 0)
+ return 0;
+
cipher->flags = flags;
return 1;
}
int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size)
{
+ if (cipher->ctx_size != 0)
+ return 0;
+
cipher->ctx_size = ctx_size;
return 1;
}
@@ -76,6 +85,9 @@ int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher,
const unsigned char *iv,
int enc))
{
+ if (cipher->init != NULL)
+ return 0;
+
cipher->init = init;
return 1;
}
@@ -86,6 +98,9 @@ int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher,
const unsigned char *in,
size_t inl))
{
+ if (cipher->do_cipher != NULL)
+ return 0;
+
cipher->do_cipher = do_cipher;
return 1;
}
@@ -93,6 +108,9 @@ int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher,
int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher,
int (*cleanup) (EVP_CIPHER_CTX *))
{
+ if (cipher->cleanup != NULL)
+ return 0;
+
cipher->cleanup = cleanup;
return 1;
}
@@ -101,6 +119,9 @@ int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher,
int (*set_asn1_parameters) (EVP_CIPHER_CTX *,
ASN1_TYPE *))
{
+ if (cipher->set_asn1_parameters != NULL)
+ return 0;
+
cipher->set_asn1_parameters = set_asn1_parameters;
return 1;
}
@@ -109,6 +130,9 @@ int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher,
int (*get_asn1_parameters) (EVP_CIPHER_CTX *,
ASN1_TYPE *))
{
+ if (cipher->get_asn1_parameters != NULL)
+ return 0;
+
cipher->get_asn1_parameters = get_asn1_parameters;
return 1;
}
@@ -117,6 +141,9 @@ int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher,
int (*ctrl) (EVP_CIPHER_CTX *, int type,
int arg, void *ptr))
{
+ if (cipher->ctrl != NULL)
+ return 0;
+
cipher->ctrl = ctrl;
return 1;
}
diff --git a/crypto/evp/evp_lib.c b/crypto/evp/evp_lib.c
index acb90f222b..9c3edb3322 100644
--- a/crypto/evp/evp_lib.c
+++ b/crypto/evp/evp_lib.c
@@ -574,26 +574,41 @@ void EVP_MD_meth_free(EVP_MD *md)
}
int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize)
{
+ if (md->block_size != 0)
+ return 0;
+
md->block_size = blocksize;
return 1;
}
int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize)
{
+ if (md->md_size != 0)
+ return 0;
+
md->md_size = resultsize;
return 1;
}
int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize)
{
+ if (md->ctx_size != 0)
+ return 0;
+
md->ctx_size = datasize;
return 1;
}
int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags)
{
+ if (md->flags != 0)
+ return 0;
+
md->flags = flags;
return 1;
}
int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx))
{
+ if (md->init != NULL)
+ return 0;
+
md->init = init;
return 1;
}
@@ -601,29 +616,44 @@ int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx,
const void *data,
size_t count))
{
+ if (md->update != NULL)
+ return 0;
+
md->update = update;
return 1;
}
int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx,
unsigned char *md))
{
+ if (md->final != NULL)
+ return 0;
+
md->final = final;
return 1;
}
int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to,
const EVP_MD_CTX *from))
{
+ if (md->copy != NULL)
+ return 0;
+
md->copy = copy;
return 1;
}
int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx))
{
+ if (md->cleanup != NULL)
+ return 0;
+
md->cleanup = cleanup;
return 1;
}
int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd,
int p1, void *p2))
{
+ if (md->md_ctrl != NULL)
+ return 0;
+
md->md_ctrl = ctrl;
return 1;
}
More information about the openssl-commits
mailing list