Commit e4e94919 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Submitted by: Victor B. Wagner <vitus@cryptocom.ru>

Reviewed by: steve@openssl.org

Check return codes properly in md BIO and dgst command.
parent 4e52b984
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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 
+5 −3
Original line number Diff line number Diff line
@@ -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);
	}