2021-02-04 Kevin Jacobs <kjacobs@mozilla.com>
* gtests/ssl_gtest/ssl_recordsize_unittest.cc, lib/ssl/ssl3ext.c:
Bug 1690583 - Fix CH padding extension size calculation. r=mt
Bug 1654332 changed the way that NSS constructs Client Hello
messages. `ssl_CalculatePaddingExtLen` now receives a
`clientHelloLength` value that includes the 4B handshake header.
This looks okay per the inline comment (which states that only the
record header is omitted from the length), but the function actually
assumes that the handshake header is also omitted.
This patch removes the addition of the handshake header length.
Those bytes are already included in the buffered CH.
[fc3a4c142c16] [tip]
* automation/abi-check/expected-report-libnss3.so.txt:
Bug 1690421 - Adjust 3.62 ABI report formatting for new libabigail.
r=bbeurdouche
[a1ed44dba32e]
2021-02-03 Kevin Jacobs <kjacobs@mozilla.com>
* automation/taskcluster/docker-builds/Dockerfile:
Bug 1690421 - Install packaged libabigail in docker-builds image
r=bbeurdouche
[3c719b620136]
2021-01-31 Kevin Jacobs <kjacobs@mozilla.com>
* cmd/selfserv/selfserv.c, cmd/tstclnt/tstclnt.c,
lib/ssl/tls13hashstate.c, lib/ssl/tls13hashstate.h:
Bug 1689228 - Minor ECH -09 fixes for interop testing, fuzzing. r=mt
A few minor ECH -09 fixes for interop testing and fuzzing:
- selfserv now takes a PKCS8 keypair for ECH. This is more
maintainable and significantly less terrible than parsing the
ECHConfigs and cobbling one together within selfserv (e.g. we can
support other KEMs without modifying the server).
- Get rid of the newline character in tstclnt retry_configs output.
- Fuzzer fixes in tls13_HandleHrrCookie:
- We shouldn't use internal_error when PK11_HPKE_ImportContext fails.
Cookies are unprotected in fuzzer mode, so this can be expected to
occur.
- Only restore the application token when recovering hash state,
otherwise the copy could happen twice, leaking one of the
allocations.
[8bbea1902024]
2021-01-25 Kevin Jacobs <kjacobs@mozilla.com>
* lib/ssl/ssl3exthandle.c:
Bug 1674819 - Fixup a51fae403328, enum type may be signed.
r=bbeurdouche
[2004338a2080]
Differential Revision: https://phabricator.services.mozilla.com/D104258
This removes some calls to commit_span from inside the draw_span specializers.
Instead it relies upon the span rasterizer loop to do some of the work, which
will incur a function pointer call in the rare case we actually return out
of a specializer early. This shouldn't be that performance critical and will
remove some inliner bloat.
Also, I refactored commit_output in the rasterizer itself to hopefully cause
fewer template instantiations which should also further reduce inliner bloat.
Differential Revision: https://phabricator.services.mozilla.com/D104150
outline-style: auto might show up in non-themed controls and such, and
the double-outline there might look ugly.
Following border-radius would be an extra improvement for the reddit
case, but no platform does it currently (Safari on macOS does it), so
let's consider that in a follow-up.
Differential Revision: https://phabricator.services.mozilla.com/D104214
This avoids paying a cost for animating the skeleton UI for faster startups.
Slow startups don't seem to be affected, given the data available. This is
likely due to slow startups being dominated by IO.
Differential Revision: https://phabricator.services.mozilla.com/D104118
Empty bytecode sites are typically only used for Wasm compilation. Assert this
in `MBasicBlock::NewPopN()` and document this in `BytecodeSite`.
(*) The only exception are fake OSR blocks in GVN.
Differential Revision: https://phabricator.services.mozilla.com/D103660
A `MDefinition`'s tracked bytecode site is always equal to the bytecode site
of its block. Assert this property so we can remove `MDefinition::trackedSite_`
in a follow-up bug.
Differential Revision: https://phabricator.services.mozilla.com/D103659
Warp compilation always has a tracked bytecode site, so instead of testing if
the bytecode site's tree is non-null, test if we're currently Warp (= not Wasm)
compiling. This should make it easier to understand this code.
Differential Revision: https://phabricator.services.mozilla.com/D103658
Part 18 ensured each definition which is attached to a block has a non-nullptr
tracked bytecode site. (This is ensured through `setTrackedSite()` which asserts
the tracked bytecode site isn't a nullptr.)
Drive-by change:
- Change `CodeGeneratorShared::encode()` to store `ins->mirRaw()` in a variable.
Differential Revision: https://phabricator.services.mozilla.com/D103657
Add a separate `MDefinition::setInstructionBlock()` method which also sets the
tracked bytecode site. `setTrackedSite()` is now only called from within
`MDefinition`, so its visibility can be changed to `private`.
With this change it's easier to see that all definitions attached to a block
also have a tracked bytecode site. We will use this property in the next parts.
Differential Revision: https://phabricator.services.mozilla.com/D103655
After part 13, `MBasicBlock::trackedSite_` is never modified outside of the
constructor. And because all call-sites pass a non-nullptr, we can assert this
and remove the nullptr check in `trackedTree()`.
Differential Revision: https://phabricator.services.mozilla.com/D103652
`MBasicBlock::pc_` is initialised with `MBasicBlock::trackedSite_`'s `pc` and
after the last part `MBasicBlock::trackedSite_` is never changed after the
constructor, so we can replace `pc_` with `trackedSite_->pc()`.
Differential Revision: https://phabricator.services.mozilla.com/D103651
The copy constructors call `MNode(const MNode&)` which copies over the
`blockAndKind_` member, so the `block` information is actually copied, too.
Differential Revision: https://phabricator.services.mozilla.com/D103648
`MToInt64` seems to allow `Int64` inputs based on the comments in
`LIRGenerator::visitToInt64()`.
Also remove `MIRType::String` from the list of non-throwing types, because
`ToBigInt(string)` can actually throw a SyntaxError. This change can't be
tested, because we currently create neither `MToBigInt` nor `MToInt64` in a
context where the input is a string and the result isn't observed.
Differential Revision: https://phabricator.services.mozilla.com/D103647