Bug 1288905 - Questionable reinterpret cast in WebSocketChannel::PrimeNewOutgoingMessage(), r=mcmanus

This commit is contained in:
Michal Novotny
2016-07-26 19:57:03 +02:00
parent eb00afa2c9
commit 0492c71819

View File

@@ -2183,14 +2183,16 @@ WebSocketChannel::PrimeNewOutgoingMessage()
// Perform the sending mask. Never use a zero mask
do {
uint8_t *buffer;
nsresult rv = mRandomGenerator->GenerateRandomBytes(4, &buffer);
PR_STATIC_ASSERT(4 == sizeof(mask));
nsresult rv = mRandomGenerator->GenerateRandomBytes(sizeof(mask),
&buffer);
if (NS_FAILED(rv)) {
LOG(("WebSocketChannel::PrimeNewOutgoingMessage(): "
"GenerateRandomBytes failure %x\n", rv));
StopSession(rv);
return;
}
mask = * reinterpret_cast<uint32_t *>(buffer);
memcpy(&mask, buffer, sizeof(mask));
free(buffer);
} while (!mask);
NetworkEndian::writeUint32(payload - sizeof(uint32_t), mask);