svn commit: r362631 - in head/security/nss: . files

Xin LI delphij at FreeBSD.org
Wed Jul 23 07:49:44 UTC 2014


Author: delphij
Date: Wed Jul 23 07:49:43 2014
New Revision: 362631
URL: http://svnweb.freebsd.org/changeset/ports/362631
QAT: https://qat.redports.org/buildarchive/r362631/

Log:
  Apply vendor patch to fix race condition in certificate verification
  that can lead to remote code execution.
  
  Reference:	https://hg.mozilla.org/projects/nss/rev/204f22c527f8
  Security:	CVE-2014-1544
  Security:	978b0f76-122d-11e4-afe3-bc5ff4fb5e7b

Added:
  head/security/nss/files/patch-bug963150   (contents, props changed)
Modified:
  head/security/nss/Makefile

Modified: head/security/nss/Makefile
==============================================================================
--- head/security/nss/Makefile	Wed Jul 23 07:41:07 2014	(r362630)
+++ head/security/nss/Makefile	Wed Jul 23 07:49:43 2014	(r362631)
@@ -3,7 +3,7 @@
 
 PORTNAME=	nss
 PORTVERSION=	3.16.1
-PORTREVISION=	1
+PORTREVISION=	2
 #DISTVERSIONSUFFIX=	.with.ckbi.1.93
 CATEGORIES=	security
 MASTER_SITES=	MOZILLA/security/${PORTNAME}/releases/${DISTNAME:tu:C/[-.]/_/g}_RTM/src

Added: head/security/nss/files/patch-bug963150
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/security/nss/files/patch-bug963150	Wed Jul 23 07:49:43 2014	(r362631)
@@ -0,0 +1,30 @@
+diff --git lib/pk11wrap/pk11cert.c lib/pk11wrap/pk11cert.c
+--- lib/pk11wrap/pk11cert.c
++++ lib/pk11wrap/pk11cert.c
+@@ -976,18 +976,25 @@ PK11_ImportCert(PK11SlotInfo *slot, CERT
+ 	cert->istemp = PR_FALSE;
+ 	cert->isperm = PR_TRUE;
+     }
+ 
+     /* add the new instance to the cert, force an update of the
+      * CERTCertificate, and finish
+      */
+     nssPKIObject_AddInstance(&c->object, certobj);
++    /* nssTrustDomain_AddCertsToCache may release a reference to 'c' and
++     * replace 'c' by a different value. So we add a reference to 'c' to
++     * prevent 'c' from being destroyed. */
++    nssCertificate_AddRef(c);
+     nssTrustDomain_AddCertsToCache(STAN_GetDefaultTrustDomain(), &c, 1);
++    /* XXX should we pass the original value of 'c' to
++     * STAN_ForceCERTCertificateUpdate? */
+     (void)STAN_ForceCERTCertificateUpdate(c);
++    nssCertificate_Destroy(c);
+     SECITEM_FreeItem(keyID,PR_TRUE);
+     return SECSuccess;
+ loser:
+     CERT_MapStanError();
+     SECITEM_FreeItem(keyID,PR_TRUE);
+     if (PORT_GetError() != SEC_ERROR_TOKEN_NOT_LOGGED_IN) {
+ 	PORT_SetError(SEC_ERROR_ADDING_CERT);
+     }
+


More information about the svn-ports-all mailing list