summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Jacobs <kjacobs@mozilla.com>2020-03-10 14:28:14 +0000
committerKevin Jacobs <kjacobs@mozilla.com>2020-03-10 14:28:14 +0000
commitaca232e85ee16df545f7c6e47356ca44f39ef371 (patch)
tree1c36b37579633fb4ed11525db7158715cf17349d
parent13824aa7c2d7efc317d9eae3c755cc29f7edb928 (diff)
downloadnss-hg-aca232e85ee16df545f7c6e47356ca44f39ef371.tar.gz
Bug 1618915 - Fix UBSAN issue in ssl_ParseSessionTicket r=jcj,bbeurdouche
Differential Revision: https://phabricator.services.mozilla.com/D66130
-rw-r--r--lib/ssl/ssl3exthandle.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/ssl/ssl3exthandle.c b/lib/ssl/ssl3exthandle.c
index a74006f70..07565ba00 100644
--- a/lib/ssl/ssl3exthandle.c
+++ b/lib/ssl/ssl3exthandle.c
@@ -1034,7 +1034,9 @@ ssl_ParseSessionTicket(sslSocket *ss, const SECItem *decryptedTicket,
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
- parsedTicket->timestamp = (PRTime)temp << 32;
+
+ /* Cast to avoid undefined behavior if the top bit is set. */
+ parsedTicket->timestamp = (PRTime)((PRUint64)temp << 32);
rv = ssl3_ExtConsumeHandshakeNumber(ss, &temp, 4, &buffer, &len);
if (rv != SECSuccess) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);