diff options
author | FranklinDM <mrmineshafter17@gmail.com> | 2023-03-09 14:45:24 +0800 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2023-03-15 13:01:21 +0100 |
commit | 9475b959d79bb5da362a1097de8a5ca98c344110 (patch) | |
tree | a33c89749d0ab01143d47bb971a32645fca862a4 /security | |
parent | 17e261ae9b53a139c0c37c68ed0dd9b10638ced8 (diff) | |
download | uxp-9475b959d79bb5da362a1097de8a5ca98c344110.tar.gz |
Issue #2148 - Make Vector not use AlignedStorage for its inline element storage
See Bug 1338374 1/2
Diffstat (limited to 'security')
-rw-r--r-- | security/certverifier/CTLogVerifier.cpp | 11 | ||||
-rw-r--r-- | security/certverifier/SignedCertificateTimestamp.h | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/security/certverifier/CTLogVerifier.cpp b/security/certverifier/CTLogVerifier.cpp index 202e4b4acd..98e1156dd1 100644 --- a/security/certverifier/CTLogVerifier.cpp +++ b/security/certverifier/CTLogVerifier.cpp @@ -172,10 +172,17 @@ CTLogVerifier::Verify(const LogEntry& entry, if (rv != Success) { return rv; } + + // sct.extensions may be empty. If it is, sctExtensionsInput will remain in + // its default state, which is valid but of length 0. Input sctExtensionsInput; rv = BufferToInput(sct.extensions, sctExtensionsInput); - if (rv != Success) { - return rv; + if (sct.extensions.length() > 0) { + rv = sctExtensionsInput.Init(sct.extensions.begin(), + sct.extensions.length()); + if (rv != Success) { + return rv; + } } Buffer serializedData; diff --git a/security/certverifier/SignedCertificateTimestamp.h b/security/certverifier/SignedCertificateTimestamp.h index 468ffbaded..e70af60cd5 100644 --- a/security/certverifier/SignedCertificateTimestamp.h +++ b/security/certverifier/SignedCertificateTimestamp.h @@ -115,6 +115,9 @@ struct SignedCertificateTimestamp inline pkix::Result BufferToInput(const Buffer& buffer, pkix::Input& input) { + if (buffer.length() == 0) { + return pkix::Result::FATAL_ERROR_LIBRARY_FAILURE; + } return input.Init(buffer.begin(), buffer.length()); } |