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 8fbdf21..c1d1b12 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 8e3221b..dec8ef3 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)