Correctly handle errors in CMS I/O code.
authorDr. Stephen Henson <steve@openssl.org>
Tue, 5 Aug 2008 15:55:53 +0000 (15:55 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Tue, 5 Aug 2008 15:55:53 +0000 (15:55 +0000)
crypto/asn1/asn_mime.c
crypto/cms/cms_smime.c

index 8fbdf21337653fe99f2cd1d97fd5658b082ba382..c1d1b12291c4b99a9043cbf1771ef3c2b4291f22 100644 (file)
@@ -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;
 }
 
index 8e3221b7269ed77427edee600bd8f9364abfaf34..dec8ef32f87d76df48866807bf01a9150fc4c6d7 100644 (file)
@@ -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)