diff --git a/CHANGES b/CHANGES
index 81942a0e7a..4ccab5772f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,11 @@
 
  Changes between 0.9.4 and 0.9.5  [xx XXX 1999]
 
+  *) Fix a bug in the new PKCS#7 code: it didn't consider the
+     case in PKCS7_dataInit() where the signed PKCS7 structure
+     didn't contain any existing data because it was being created.
+     [Po-Cheng Chen" <pocheng@nst.com.tw>, slightly modified by Steve Henson]
+
   *) Add a salt to the key derivation routines in enc.c. This
      forms the first 8 bytes of the encrypted file. Also add a
      -S option to allow a salt to be input on the command line.
diff --git a/apps/progs.h b/apps/progs.h
index cf5437da6a..bd9e806bb7 100644
--- a/apps/progs.h
+++ b/apps/progs.h
@@ -118,9 +118,6 @@ FUNCTION functions[] = {
 #ifndef NO_RC4
 	{FUNC_TYPE_CIPHER,"rc4",enc_main},
 #endif
-#ifndef NO_RC4
-	{FUNC_TYPE_CIPHER,"rc4-64",enc_main},
-#endif
 #ifndef NO_RC4
 	{FUNC_TYPE_CIPHER,"rc4-40",enc_main},
 #endif
diff --git a/apps/progs.pl b/apps/progs.pl
index 2c4d034e4c..46cf8bf629 100644
--- a/apps/progs.pl
+++ b/apps/progs.pl
@@ -50,7 +50,7 @@ foreach ("md2","md5","sha","sha1","mdc2","rmd160")
 
 foreach (
 	"base64",
-	"des", "des3", "desx", "idea", "rc4", "rc4-64", "rc4-40",
+	"des", "des3", "desx", "idea", "rc4", "rc4-40",
 	"rc2", "bf", "cast", "rc5",
 	"des-ecb", "des-ede",    "des-ede3",
 	"des-cbc", "des-ede-cbc","des-ede3-cbc",
diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c
index 4c32f053b7..7feb01230e 100644
--- a/crypto/pkcs7/pk7_doit.c
+++ b/crypto/pkcs7/pk7_doit.c
@@ -226,7 +226,8 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
 				os=p7->d.sign->contents->d.data;
 				if (os->length > 0) bio = 
 					BIO_new_mem_buf(os->data, os->length);
-			} else {
+			} 
+			if(bio == NULL) {
 				bio=BIO_new(BIO_s_mem());
 				BIO_set_mem_eof_return(bio,0);
 			}