OLD | NEW |
1 diff --git a/ssl/sslinfo.c b/ssl/sslinfo.c | 1 diff --git a/lib/ssl/sslinfo.c b/lib/ssl/sslinfo.c |
2 index 00f2f38..ba230d2 100644 | 2 index 216ab0f..7048eb8 100644 |
3 --- a/ssl/sslinfo.c | 3 --- a/lib/ssl/sslinfo.c |
4 +++ b/ssl/sslinfo.c | 4 +++ b/lib/ssl/sslinfo.c |
5 @@ -350,8 +350,13 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd, | 5 @@ -387,8 +387,13 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd, |
6 return SECFailure; | 6 return SECFailure; |
7 } | 7 } |
8 | 8 |
9 + ssl_GetRecvBufLock(ss); | 9 + ssl_GetRecvBufLock(ss); |
10 + ssl_GetSSL3HandshakeLock(ss); | 10 + ssl_GetSSL3HandshakeLock(ss); |
11 + | 11 + |
12 if (ss->version < SSL_LIBRARY_VERSION_3_1_TLS) { | 12 if (ss->version < SSL_LIBRARY_VERSION_3_1_TLS) { |
13 PORT_SetError(SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_VERSION); | 13 PORT_SetError(SSL_ERROR_FEATURE_NOT_SUPPORTED_FOR_VERSION); |
14 + ssl_ReleaseSSL3HandshakeLock(ss); | 14 + ssl_ReleaseSSL3HandshakeLock(ss); |
15 + ssl_ReleaseRecvBufLock(ss); | 15 + ssl_ReleaseRecvBufLock(ss); |
16 return SECFailure; | 16 return SECFailure; |
17 } | 17 } |
18 | 18 |
19 @@ -362,13 +367,17 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd, | 19 @@ -399,13 +404,17 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd, |
20 } | 20 } |
21 val = PORT_Alloc(valLen); | 21 val = PORT_Alloc(valLen); |
22 if (!val) { | 22 if (!val) { |
23 + ssl_ReleaseSSL3HandshakeLock(ss); | 23 + ssl_ReleaseSSL3HandshakeLock(ss); |
24 + ssl_ReleaseRecvBufLock(ss); | 24 + ssl_ReleaseRecvBufLock(ss); |
25 return SECFailure; | 25 return SECFailure; |
26 } | 26 } |
27 i = 0; | 27 i = 0; |
28 + | 28 + |
29 PORT_Memcpy(val + i, &ss->ssl3.hs.client_random.rand, SSL3_RANDOM_LENGTH); | 29 PORT_Memcpy(val + i, &ss->ssl3.hs.client_random.rand, SSL3_RANDOM_LENGTH); |
30 i += SSL3_RANDOM_LENGTH; | 30 i += SSL3_RANDOM_LENGTH; |
31 PORT_Memcpy(val + i, &ss->ssl3.hs.server_random.rand, SSL3_RANDOM_LENGTH); | 31 PORT_Memcpy(val + i, &ss->ssl3.hs.server_random.rand, SSL3_RANDOM_LENGTH); |
32 i += SSL3_RANDOM_LENGTH; | 32 i += SSL3_RANDOM_LENGTH; |
33 + | 33 + |
34 if (hasContext) { | 34 if (hasContext) { |
35 val[i++] = contextLen >> 8; | 35 val[i++] = contextLen >> 8; |
36 val[i++] = contextLen; | 36 val[i++] = contextLen; |
37 @@ -389,6 +398,8 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd, | 37 @@ -426,6 +435,8 @@ SSL_ExportKeyingMaterial(PRFileDesc *fd, |
38 valLen, out, outLen); | 38 valLen, out, outLen); |
39 } | 39 } |
40 ssl_ReleaseSpecReadLock(ss); | 40 ssl_ReleaseSpecReadLock(ss); |
41 + ssl_ReleaseSSL3HandshakeLock(ss); | 41 + ssl_ReleaseSSL3HandshakeLock(ss); |
42 + ssl_ReleaseRecvBufLock(ss); | 42 + ssl_ReleaseRecvBufLock(ss); |
43 | 43 |
44 PORT_ZFree(val, valLen); | 44 PORT_ZFree(val, valLen); |
45 return rv; | 45 return rv; |
OLD | NEW |