From: Dr. Stephen Henson Date: Wed, 18 Mar 2009 18:53:08 +0000 (+0000) Subject: Submitted by: Victor B. Wagner X-Git-Tag: OpenSSL_1_0_0-beta1~25 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e4e949192ba1d72226ec22b76cfe540b1d675d55;p=oweals%2Fopenssl.git Submitted by: Victor B. Wagner Reviewed by: steve@openssl.org Check return codes properly in md BIO and dgst command. --- 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); }