| Index: openssl/crypto/evp/bio_md.c
|
| ===================================================================
|
| --- openssl/crypto/evp/bio_md.c (revision 105093)
|
| +++ openssl/crypto/evp/bio_md.c (working copy)
|
| @@ -130,8 +130,8 @@
|
| {
|
| if (ret > 0)
|
| {
|
| - EVP_DigestUpdate(ctx,(unsigned char *)out,
|
| - (unsigned int)ret);
|
| + if (EVP_DigestUpdate(ctx,(unsigned char *)out,
|
| + (unsigned int)ret)<=0) return (-1);
|
| }
|
| }
|
| BIO_clear_retry_flags(b);
|
| @@ -157,8 +157,11 @@
|
| (unsigned int)ret);
|
| }
|
| }
|
| - BIO_clear_retry_flags(b);
|
| - BIO_copy_next_retry(b);
|
| + if(b->next_bio != NULL)
|
| + {
|
| + BIO_clear_retry_flags(b);
|
| + BIO_copy_next_retry(b);
|
| + }
|
| return(ret);
|
| }
|
|
|
| @@ -194,6 +197,7 @@
|
| case BIO_C_GET_MD_CTX:
|
| pctx=ptr;
|
| *pctx=ctx;
|
| + b->init = 1;
|
| break;
|
| case BIO_C_SET_MD_CTX:
|
| if (b->init)
|
| @@ -249,7 +253,9 @@
|
| ctx=bp->ptr;
|
| if (size < ctx->digest->md_size)
|
| return(0);
|
| - EVP_DigestFinal_ex(ctx,(unsigned char *)buf,&ret);
|
| + if (EVP_DigestFinal_ex(ctx,(unsigned char *)buf,&ret)<=0)
|
| + return -1;
|
| +
|
| return((int)ret);
|
| }
|
|
|
|
|