OSSL_DECODER_CTX_set_params() and OSSL_ENCODER_CTX_set_params() would
stop as soon as a decoder / encoder instance failed, which leaves the
rest of them with a possibly previous and different value.
Instead, these functions will now call them all, but will return 0 if
any of the instance calls failed.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13156)
int OSSL_DECODER_CTX_set_params(OSSL_DECODER_CTX *ctx,
const OSSL_PARAM params[])
{
+ int ok = 1;
size_t i;
size_t l;
if (decoderctx == NULL || decoder->set_ctx_params == NULL)
continue;
if (!decoder->set_ctx_params(decoderctx, params))
- return 0;
+ ok = 0;
}
- return 1;
+ return ok;
}
void OSSL_DECODER_CTX_free(OSSL_DECODER_CTX *ctx)
int OSSL_ENCODER_CTX_set_params(OSSL_ENCODER_CTX *ctx,
const OSSL_PARAM params[])
{
+ int ok = 1;
size_t i;
size_t l;
if (encoderctx == NULL || encoder->set_ctx_params == NULL)
continue;
if (!encoder->set_ctx_params(encoderctx, params))
- return 0;
+ ok = 0;
}
- return 1;
+ return ok;
}
void OSSL_ENCODER_CTX_free(OSSL_ENCODER_CTX *ctx)