summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2008-08-05 15:55:53 +0000
committerDr. Stephen Henson <steve@openssl.org>2008-08-05 15:55:53 +0000
commit6d6c47980e943f3946b3894ac341d61e3c908c92 (patch)
treeb5438f33d45800d92f2a76a892f6a0b80ae23917 /crypto
parent474b3b1cc80a7c686d4a5fecc6836ec48c7c01d4 (diff)
Correctly handle errors in CMS I/O code.
Diffstat (limited to 'crypto')
-rw-r--r--crypto/asn1/asn_mime.c2
-rw-r--r--crypto/cms/cms_smime.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/crypto/asn1/asn_mime.c b/crypto/asn1/asn_mime.c
index 8fbdf21337..c1d1b12291 100644
--- a/crypto/asn1/asn_mime.c
+++ b/crypto/asn1/asn_mime.c
@@ -592,6 +592,8 @@ int SMIME_text(BIO *in, BIO *out)
sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
while ((len = BIO_read(in, iobuf, sizeof(iobuf))) > 0)
BIO_write(out, iobuf, len);
+ if (len < 0)
+ return 0;
return 1;
}
diff --git a/crypto/cms/cms_smime.c b/crypto/cms/cms_smime.c
index 8e3221b726..dec8ef32f8 100644
--- a/crypto/cms/cms_smime.c
+++ b/crypto/cms/cms_smime.c
@@ -89,11 +89,13 @@ static int cms_copy_content(BIO *out, BIO *in, unsigned int flags)
if (!BIO_get_cipher_status(in))
goto err;
}
+ if (i < 0)
+ goto err;
break;
}
- if (tmpout)
- BIO_write(tmpout, buf, i);
+ if (tmpout && (BIO_write(tmpout, buf, i) != i))
+ goto err;
}
if(flags & CMS_TEXT)