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
commitd8703e74896b5da7926b27f2565690a56594430a (patch)
tree2a287d549c33cc48621468fecde0f0bbcc40c3de
parentebe57c1d7c1885a0b1ce151a43d8bf561f5c59c2 (diff)
downloadnss-hg-d8703e74896b5da7926b27f2565690a56594430a.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);