| Index: net/third_party/nss/patches/secretexporterlocks.patch
|
| ===================================================================
|
| --- net/third_party/nss/patches/secretexporterlocks.patch (revision 0)
|
| +++ net/third_party/nss/patches/secretexporterlocks.patch (revision 0)
|
| @@ -0,0 +1,44 @@
|
| +diff -pu -r a/net/third_party/nss/ssl/sslinfo.c b/net/third_party/nss/ssl/sslinfo.c
|
| +--- a/net/third_party/nss/ssl/sslinfo.c 2012-08-03 16:54:31.000000000 -0700
|
| ++++ b/net/third_party/nss/ssl/sslinfo.c 2012-11-12 16:14:30.596704310 -0800
|
| +@@ -342,8 +342,13 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd,
|
| + return SECFailure;
|
| + }
|
| +
|
| ++ ssl_GetRecvBufLock(ss);
|
| ++ ssl_GetSSL3HandshakeLock(ss);
|
| ++
|
| + if (ss->version < SSL_LIBRARY_VERSION_3_1_TLS) {
|
| + PORT_SetError(SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_VERSION);
|
| ++ ssl_ReleaseSSL3HandshakeLock(ss);
|
| ++ ssl_ReleaseRecvBufLock(ss);
|
| + return SECFailure;
|
| + }
|
| +
|
| +@@ -354,13 +359,17 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd,
|
| + }
|
| + val = PORT_Alloc(valLen);
|
| + if (!val) {
|
| ++ ssl_ReleaseSSL3HandshakeLock(ss);
|
| ++ ssl_ReleaseRecvBufLock(ss);
|
| + return SECFailure;
|
| + }
|
| + i = 0;
|
| ++
|
| + PORT_Memcpy(val + i, &ss->ssl3.hs.client_random.rand, SSL3_RANDOM_LENGTH);
|
| + i += SSL3_RANDOM_LENGTH;
|
| + PORT_Memcpy(val + i, &ss->ssl3.hs.server_random.rand, SSL3_RANDOM_LENGTH);
|
| + i += SSL3_RANDOM_LENGTH;
|
| ++
|
| + if (hasContext) {
|
| + val[i++] = contextLen >> 8;
|
| + val[i++] = contextLen;
|
| +@@ -381,6 +390,8 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd,
|
| + valLen, out, outLen);
|
| + }
|
| + ssl_ReleaseSpecReadLock(ss);
|
| ++ ssl_ReleaseSSL3HandshakeLock(ss);
|
| ++ ssl_ReleaseRecvBufLock(ss);
|
| +
|
| + PORT_ZFree(val, valLen);
|
| + return rv;
|
|
|