Index: net/third_party/nss/ssl/sslsnce.c |
diff --git a/net/third_party/nss/ssl/sslsnce.c b/net/third_party/nss/ssl/sslsnce.c |
index 327920080c5db9f28a093a6b1db0e4744fc3037a..3856c13166fba9da8935823508c0de042f9d6eee 100644 |
--- a/net/third_party/nss/ssl/sslsnce.c |
+++ b/net/third_party/nss/ssl/sslsnce.c |
@@ -120,14 +120,14 @@ struct sidCacheEntryStr { |
/* 2 */ ssl3CipherSuite cipherSuite; |
/* 2 */ PRUint16 compression; /* SSLCompressionMethod */ |
-/* 52 */ ssl3SidKeys keys; /* keys, wrapped as needed. */ |
+/* 54 */ ssl3SidKeys keys; /* keys, wrapped as needed. */ |
/* 4 */ PRUint32 masterWrapMech; |
/* 4 */ SSL3KEAType exchKeyType; |
/* 4 */ PRInt32 certIndex; |
/* 4 */ PRInt32 srvNameIndex; |
/* 32 */ PRUint8 srvNameHash[SHA256_LENGTH]; /* SHA256 name hash */ |
-/*104 */} ssl3; |
+/*108 */} ssl3; |
/* force sizeof(sidCacheEntry) to be a multiple of cache line size */ |
struct { |
/*120 */ PRUint8 filler[120]; /* 72+120==192, a multiple of 16 */ |
@@ -507,7 +507,6 @@ ConvertFromSID(sidCacheEntry *to, sslSessionID *from) |
to->sessionIDLength = from->u.ssl3.sessionIDLength; |
to->u.ssl3.certIndex = -1; |
to->u.ssl3.srvNameIndex = -1; |
- |
PORT_Memcpy(to->sessionID, from->u.ssl3.sessionID, |
to->sessionIDLength); |
@@ -637,7 +636,7 @@ ConvertToSID(sidCacheEntry * from, |
to->authKeyBits = from->authKeyBits; |
to->keaType = from->keaType; |
to->keaKeyBits = from->keaKeyBits; |
- |
+ |
return to; |
loser: |
@@ -1228,20 +1227,32 @@ InitCache(cacheDesc *cache, int maxCacheEntries, int maxCertCacheEntries, |
/* Fix pointers in our private copy of cache descriptor to point to |
** spaces in shared memory |
*/ |
- ptr = (ptrdiff_t)cache->cacheMem; |
- *(ptrdiff_t *)(&cache->sidCacheLocks) += ptr; |
- *(ptrdiff_t *)(&cache->keyCacheLock ) += ptr; |
- *(ptrdiff_t *)(&cache->certCacheLock) += ptr; |
- *(ptrdiff_t *)(&cache->srvNameCacheLock) += ptr; |
- *(ptrdiff_t *)(&cache->sidCacheSets ) += ptr; |
- *(ptrdiff_t *)(&cache->sidCacheData ) += ptr; |
- *(ptrdiff_t *)(&cache->certCacheData) += ptr; |
- *(ptrdiff_t *)(&cache->keyCacheData ) += ptr; |
- *(ptrdiff_t *)(&cache->ticketKeyNameSuffix) += ptr; |
- *(ptrdiff_t *)(&cache->ticketEncKey ) += ptr; |
- *(ptrdiff_t *)(&cache->ticketMacKey ) += ptr; |
- *(ptrdiff_t *)(&cache->ticketKeysValid) += ptr; |
- *(ptrdiff_t *)(&cache->srvNameCacheData) += ptr; |
+ cache->sidCacheLocks = (sidCacheLock *) |
+ (cache->cacheMem + (ptrdiff_t)cache->sidCacheLocks); |
+ cache->keyCacheLock = (sidCacheLock *) |
+ (cache->cacheMem + (ptrdiff_t)cache->keyCacheLock); |
+ cache->certCacheLock = (sidCacheLock *) |
+ (cache->cacheMem + (ptrdiff_t)cache->certCacheLock); |
+ cache->srvNameCacheLock = (sidCacheLock *) |
+ (cache->cacheMem + (ptrdiff_t)cache->srvNameCacheLock); |
+ cache->sidCacheSets = (sidCacheSet *) |
+ (cache->cacheMem + (ptrdiff_t)cache->sidCacheSets); |
+ cache->sidCacheData = (sidCacheEntry *) |
+ (cache->cacheMem + (ptrdiff_t)cache->sidCacheData); |
+ cache->certCacheData = (certCacheEntry *) |
+ (cache->cacheMem + (ptrdiff_t)cache->certCacheData); |
+ cache->keyCacheData = (SSLWrappedSymWrappingKey *) |
+ (cache->cacheMem + (ptrdiff_t)cache->keyCacheData); |
+ cache->ticketKeyNameSuffix = (PRUint8 *) |
+ (cache->cacheMem + (ptrdiff_t)cache->ticketKeyNameSuffix); |
+ cache->ticketEncKey = (encKeyCacheEntry *) |
+ (cache->cacheMem + (ptrdiff_t)cache->ticketEncKey); |
+ cache->ticketMacKey = (encKeyCacheEntry *) |
+ (cache->cacheMem + (ptrdiff_t)cache->ticketMacKey); |
+ cache->ticketKeysValid = (PRUint32 *) |
+ (cache->cacheMem + (ptrdiff_t)cache->ticketKeysValid); |
+ cache->srvNameCacheData = (srvNameCacheEntry *) |
+ (cache->cacheMem + (ptrdiff_t)cache->srvNameCacheData); |
/* initialize the locks */ |
init_time = ssl_Time(); |
@@ -1484,7 +1495,6 @@ SSL_InheritMPServerSIDCacheInstance(cacheDesc *cache, const char * envString) |
char * fmString = NULL; |
char * myEnvString = NULL; |
unsigned int decoLen; |
- ptrdiff_t ptr; |
inheritance inherit; |
cacheDesc my; |
#ifdef WINNT |
@@ -1580,20 +1590,32 @@ SSL_InheritMPServerSIDCacheInstance(cacheDesc *cache, const char * envString) |
/* Fix pointers in our private copy of cache descriptor to point to |
** spaces in shared memory, whose address is now in "my". |
*/ |
- ptr = (ptrdiff_t)my.cacheMem; |
- *(ptrdiff_t *)(&cache->sidCacheLocks) += ptr; |
- *(ptrdiff_t *)(&cache->keyCacheLock ) += ptr; |
- *(ptrdiff_t *)(&cache->certCacheLock) += ptr; |
- *(ptrdiff_t *)(&cache->srvNameCacheLock) += ptr; |
- *(ptrdiff_t *)(&cache->sidCacheSets ) += ptr; |
- *(ptrdiff_t *)(&cache->sidCacheData ) += ptr; |
- *(ptrdiff_t *)(&cache->certCacheData) += ptr; |
- *(ptrdiff_t *)(&cache->keyCacheData ) += ptr; |
- *(ptrdiff_t *)(&cache->ticketKeyNameSuffix) += ptr; |
- *(ptrdiff_t *)(&cache->ticketEncKey ) += ptr; |
- *(ptrdiff_t *)(&cache->ticketMacKey ) += ptr; |
- *(ptrdiff_t *)(&cache->ticketKeysValid) += ptr; |
- *(ptrdiff_t *)(&cache->srvNameCacheData) += ptr; |
+ cache->sidCacheLocks = (sidCacheLock *) |
+ (my.cacheMem + (ptrdiff_t)cache->sidCacheLocks); |
+ cache->keyCacheLock = (sidCacheLock *) |
+ (my.cacheMem + (ptrdiff_t)cache->keyCacheLock); |
+ cache->certCacheLock = (sidCacheLock *) |
+ (my.cacheMem + (ptrdiff_t)cache->certCacheLock); |
+ cache->srvNameCacheLock = (sidCacheLock *) |
+ (my.cacheMem + (ptrdiff_t)cache->srvNameCacheLock); |
+ cache->sidCacheSets = (sidCacheSet *) |
+ (my.cacheMem + (ptrdiff_t)cache->sidCacheSets); |
+ cache->sidCacheData = (sidCacheEntry *) |
+ (my.cacheMem + (ptrdiff_t)cache->sidCacheData); |
+ cache->certCacheData = (certCacheEntry *) |
+ (my.cacheMem + (ptrdiff_t)cache->certCacheData); |
+ cache->keyCacheData = (SSLWrappedSymWrappingKey *) |
+ (my.cacheMem + (ptrdiff_t)cache->keyCacheData); |
+ cache->ticketKeyNameSuffix = (PRUint8 *) |
+ (my.cacheMem + (ptrdiff_t)cache->ticketKeyNameSuffix); |
+ cache->ticketEncKey = (encKeyCacheEntry *) |
+ (my.cacheMem + (ptrdiff_t)cache->ticketEncKey); |
+ cache->ticketMacKey = (encKeyCacheEntry *) |
+ (my.cacheMem + (ptrdiff_t)cache->ticketMacKey); |
+ cache->ticketKeysValid = (PRUint32 *) |
+ (my.cacheMem + (ptrdiff_t)cache->ticketKeysValid); |
+ cache->srvNameCacheData = (srvNameCacheEntry *) |
+ (my.cacheMem + (ptrdiff_t)cache->srvNameCacheData); |
cache->cacheMemMap = my.cacheMemMap; |
cache->cacheMem = my.cacheMem; |