/* we use md as a filter, reading from 'in' */
- BIO_set_md(bmd,md);
+ if (!BIO_set_md(bmd,md))
+ {
+ BIO_printf(bio_err, "Error setting digest %s\n", pname);
+ ERR_print_errors(bio_err);
+ goto end;
+ }
+
inp=BIO_push(bmd,in);
if (argc == 0)
{
case BIO_CTRL_RESET:
if (b->init)
- EVP_DigestInit_ex(ctx,ctx->digest, NULL);
+ ret = EVP_DigestInit_ex(ctx,ctx->digest, NULL);
else
ret=0;
- ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
+ if (ret > 0)
+ ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
break;
case BIO_C_GET_MD:
if (b->init)
case BIO_C_SET_MD:
md=ptr;
- EVP_DigestInit_ex(ctx,md, NULL);
- b->init=1;
+ ret = EVP_DigestInit_ex(ctx,md, NULL);
+ if (ret > 0)
+ b->init=1;
break;
case BIO_CTRL_DUP:
dbio=ptr;