From e4e949192ba1d72226ec22b76cfe540b1d675d55 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Wed, 18 Mar 2009 18:53:08 +0000 Subject: Submitted by: Victor B. Wagner Reviewed by: steve@openssl.org Check return codes properly in md BIO and dgst command. --- apps/dgst.c | 9 ++++++++- crypto/evp/bio_md.c | 8 +++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/apps/dgst.c b/apps/dgst.c index 2abb3e0b21..83b79c328a 100644 --- a/apps/dgst.c +++ b/apps/dgst.c @@ -551,7 +551,7 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, const char *sig_name, const char *md_name, const char *file,BIO *bmd) { - size_t len; + ssize_t len; int i; for (;;) @@ -598,7 +598,14 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, } } else + { len=BIO_gets(bp,(char *)buf,BUFSIZE); + if (len <0) + { + ERR_print_errors(bio_err); + return 1; + } + } if(binout) BIO_write(out, buf, len); else diff --git a/crypto/evp/bio_md.c b/crypto/evp/bio_md.c index 231b56b65d..9841e32e1a 100644 --- a/crypto/evp/bio_md.c +++ b/crypto/evp/bio_md.c @@ -130,8 +130,8 @@ static int md_read(BIO *b, char *out, int outl) { 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); @@ -253,7 +253,9 @@ static int md_gets(BIO *bp, char *buf, int size) 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); } -- cgit v1.2.3