PKCS7err(PKCS7_F_PKCS7_SIGN,PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR);\r
goto err;\r
}\r
+@@ -173,7 +176,8 @@\r
+ STACK_OF(PKCS7_SIGNER_INFO) *sinfos;\r
+ PKCS7_SIGNER_INFO *si;\r
+ X509_STORE_CTX cert_ctx;\r
+- char buf[4096];\r
++ char *buf = NULL;\r
++ int bufsiz;\r
+ int i, j=0, k, ret = 0;\r
+ BIO *p7bio;\r
+ BIO *tmpin, *tmpout;\r
+@@ -284,10 +288,16 @@\r
+ BIO_set_mem_eof_return(tmpout, 0);\r
+ } else tmpout = out;\r
+ \r
++ bufsiz = 4096;\r
++ buf = OPENSSL_malloc (bufsiz);\r
++ if (buf == NULL) {\r
++ goto err;\r
++ }\r
++\r
+ /* We now have to 'read' from p7bio to calculate digests etc. */\r
+ for (;;)\r
+ {\r
+- i=BIO_read(p7bio,buf,sizeof(buf));\r
++ i=BIO_read(p7bio,buf,bufsiz);\r
+ if (i <= 0) break;\r
+ if (tmpout) BIO_write(tmpout, buf, i);\r
+ }\r
+@@ -326,6 +336,10 @@\r
+ \r
+ sk_X509_free(signers);\r
+ \r
++ if (buf != NULL) {\r
++ OPENSSL_free (buf);\r
++ }\r
++\r
+ return ret;\r
+ }\r
+ \r
Index: crypto/rand/rand_egd.c\r
===================================================================\r
--- crypto/rand/rand_egd.c (revision 1)\r
===================================================================\r
--- crypto/x509/x509_vfy.c (revision 1)\r
+++ crypto/x509/x509_vfy.c (working copy)\r
-@@ -386,7 +386,11 @@\r
- \r
- static int check_chain_extensions(X509_STORE_CTX *ctx)\r
- {\r
--#ifdef OPENSSL_NO_CHAIN_VERIFY\r
-+#if defined(OPENSSL_NO_CHAIN_VERIFY) || defined(OPENSSL_SYS_UEFI)\r
-+ /* \r
-+ NOTE: Bypass KU Flags Checking for UEFI version. There are incorrect KU flag setting\r
-+ in Authenticode Signing Certificates. \r
-+ */\r
- return 1;\r
- #else\r
- int i, ok=0, must_be_ca, plen = 0;\r
-@@ -899,6 +903,10 @@\r
+@@ -899,6 +899,10 @@\r
\r
static int check_cert_time(X509_STORE_CTX *ctx, X509 *x)\r
{\r
time_t *ptime;\r
int i;\r
\r
-@@ -942,6 +950,7 @@\r
+@@ -942,6 +946,7 @@\r
}\r
\r
return 1;\r