| Index: net/third_party/nss/patches/negotiatedextension.patch
|
| ===================================================================
|
| --- net/third_party/nss/patches/negotiatedextension.patch (revision 0)
|
| +++ net/third_party/nss/patches/negotiatedextension.patch (revision 0)
|
| @@ -0,0 +1,45 @@
|
| +Index: mozilla/security/nss/lib/ssl/sslreveal.c
|
| +===================================================================
|
| +RCS file: /cvsroot/mozilla/security/nss/lib/ssl/sslreveal.c,v
|
| +retrieving revision 1.8
|
| +diff -u -p -u -8 -r1.8 sslreveal.c
|
| +--- mozilla/security/nss/lib/ssl/sslreveal.c 3 Aug 2010 18:48:45 -0000 1.8
|
| ++++ mozilla/security/nss/lib/ssl/sslreveal.c 25 Aug 2011 00:48:18 -0000
|
| +@@ -106,36 +106,29 @@ SSL_RevealURL(PRFileDesc * fd)
|
| + SECStatus
|
| + SSL_HandshakeNegotiatedExtension(PRFileDesc * socket,
|
| + SSLExtensionType extId,
|
| + PRBool *pYes)
|
| + {
|
| + /* some decisions derived from SSL_GetChannelInfo */
|
| + sslSocket * sslsocket = NULL;
|
| + SECStatus rv = SECFailure;
|
| +- PRBool enoughFirstHsDone = PR_FALSE;
|
| +
|
| + if (!pYes)
|
| + return rv;
|
| +
|
| + sslsocket = ssl_FindSocket(socket);
|
| + if (!sslsocket) {
|
| + SSL_DBG(("%d: SSL[%d]: bad socket in HandshakeNegotiatedExtension",
|
| + SSL_GETPID(), socket));
|
| + return rv;
|
| + }
|
| +
|
| +- if (sslsocket->firstHsDone) {
|
| +- enoughFirstHsDone = PR_TRUE;
|
| +- } else if (sslsocket->ssl3.initialized && ssl3_CanFalseStart(sslsocket)) {
|
| +- enoughFirstHsDone = PR_TRUE;
|
| +- }
|
| +-
|
| + /* according to public API SSL_GetChannelInfo, this doesn't need a lock */
|
| +- if (sslsocket->opt.useSecurity && enoughFirstHsDone) {
|
| ++ if (sslsocket->opt.useSecurity) {
|
| + if (sslsocket->ssl3.initialized) { /* SSL3 and TLS */
|
| + /* now we know this socket went through ssl3_InitState() and
|
| + * ss->xtnData got initialized, which is the only member accessed by
|
| + * ssl3_ExtensionNegotiated();
|
| + * Member xtnData appears to get accessed in functions that handle
|
| + * the handshake (hello messages and extension sending),
|
| + * therefore the handshake lock should be sufficient.
|
| + */
|
|
|