store: Avoid spurious error from decoding at EOF

Fixes #15596

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15661)
master
Tomas Mraz 2 years ago
parent 726f92e016
commit 20e80ad1bc

@ -518,6 +518,7 @@ static int file_load_file(struct file_ctx_st *ctx,
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)
{
struct file_load_data_st data;
int ret, err;
/* Setup the decoders (one time shot per session */
@ -533,7 +534,16 @@ static int file_load_file(struct file_ctx_st *ctx,
/* Launch */
return OSSL_DECODER_from_bio(ctx->_.file.decoderctx, ctx->_.file.file);
ERR_set_mark();
ret = OSSL_DECODER_from_bio(ctx->_.file.decoderctx, ctx->_.file.file);
if (BIO_eof(ctx->_.file.file)
&& ((err = ERR_peek_last_error()) != 0)
&& ERR_GET_LIB(err) == ERR_LIB_OSSL_DECODER
&& ERR_GET_REASON(err) == ERR_R_UNSUPPORTED)
ERR_pop_to_mark();
else
ERR_clear_last_mark();
return ret;
}
/*-

Loading…
Cancel
Save