summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Horman <nhorman@openssl.org>2023-12-16 15:32:48 -0500
committerNeil Horman <nhorman@openssl.org>2024-02-16 08:34:11 -0500
commitcf57c3ecfa416afbc47d36633981034809ee6792 (patch)
tree12943c9c6c0f9a783d2351aaa962f084e66778b4
parentd597b46f9bdb533761e36fcf1d96ce83f3f6f04d (diff)
Check for NULL cleanup function before using it in encoder_process
encoder_process assumes a cleanup function has been set in the currently in-use encoder during processing, which can lead to segfaults if said function hasn't been set Add a NULL check for this condition, returning -1 if it is not set Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/23069)
-rw-r--r--crypto/encode_decode/encoder_lib.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/crypto/encode_decode/encoder_lib.c b/crypto/encode_decode/encoder_lib.c
index 28dae99dc8..945b5ba148 100644
--- a/crypto/encode_decode/encoder_lib.c
+++ b/crypto/encode_decode/encoder_lib.c
@@ -59,6 +59,11 @@ int OSSL_ENCODER_to_bio(OSSL_ENCODER_CTX *ctx, BIO *out)
return 0;
}
+ if (ctx->cleanup == NULL || ctx->construct == NULL) {
+ ERR_raise(ERR_LIB_OSSL_ENCODER, ERR_R_INIT_FAIL);
+ return 0;
+ }
+
return encoder_process(&data) > 0;
}