diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2009-03-18 18:53:08 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2009-03-18 18:53:08 +0000 |
commit | e4e949192ba1d72226ec22b76cfe540b1d675d55 (patch) | |
tree | 8908c6ffd064f9a760c79e89e95b7a7a54db6c86 | |
parent | 4e52b9845e0b0aeff2c93958fde59a0cccd70ab2 (diff) |
Submitted by: Victor B. Wagner <vitus@cryptocom.ru>
Reviewed by: steve@openssl.org
Check return codes properly in md BIO and dgst command.
-rw-r--r-- | apps/dgst.c | 9 | ||||
-rw-r--r-- | 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); } |