--- smime.orig.c	2012-12-05 01:39:10.000000000 +0400
+++ smime.c	2012-12-05 01:42:57.000000000 +0400
@@ -774,6 +774,7 @@
 		PEM_write_bio_PKCS7(out, p7);
 	else
 		{
+		int rv;
 		if (to)
 			BIO_printf(out, "To: %s\n", to);
 		if (from)
@@ -783,19 +784,25 @@
 		if (outformat == FORMAT_SMIME) 
 			{
 			if (operation == SMIME_RESIGN)
-				SMIME_write_PKCS7(out, p7, indata, flags);
+				rv = SMIME_write_PKCS7(out, p7, indata, flags);
 			else
-				SMIME_write_PKCS7(out, p7, in, flags);
+				rv = SMIME_write_PKCS7(out, p7, in, flags);
 			}
 		else if (outformat == FORMAT_PEM) 
-			PEM_write_bio_PKCS7_stream(out, p7, in, flags);
+			rv = PEM_write_bio_PKCS7_stream(out, p7, in, flags);
 		else if (outformat == FORMAT_ASN1) 
-			i2d_PKCS7_bio_stream(out,p7, in, flags);
+			rv = i2d_PKCS7_bio_stream(out,p7, in, flags);
 		else
 			{
 			BIO_printf(bio_err, "Bad output format for PKCS#7 file\n");
 			goto end;
 			}
+		if (rv == 0)
+			{
+				BIO_printf(bio_err, "Error writing PKCS#7");
+				ret = 3;
+				goto end;
+			}
 		}
 	ret = 0;
 end:
