Skip to content

Merge upstream v1.5.6 (KMREQ CVE fixes)#19

Merged
andrescera merged 6 commits into
masterfrom
merge/upstream-2026-06
Jul 21, 2026
Merged

Merge upstream v1.5.6 (KMREQ CVE fixes)#19
andrescera merged 6 commits into
masterfrom
merge/upstream-2026-06

Conversation

@andrescera

Copy link
Copy Markdown
Member

What

True catch-up merge of upstream Haivision/srt v1.5.6 (c63c311) into the CeraLive
fork's master, plus a docs/CERALIVE-PATCHES.md inventory of the CeraLive patch set.

Two commits:

  • Merge upstream v1.5.6 (KMREQ CVE fixes) — a real two-parent merge commit
    (parents: our 9b02dc7 + upstream c63c311).
  • docs: document the CeraLive patch set — the branding doc + AGENTS.md CI-table
    truth-up for the upstream workflow rename.

Why

v1.5.6 carries the KMREQ heap-overflow hardening (CVE-2026-55868/55869, PR#3345) —
the handshake KMREQ validation that was previously absent in the fork. Absorbing it by
true merge (not rebase/replay) keeps every upstream tag fully contained and lets the
merge-base advance, so the next catch-up stays clean. The doc gives the fork a single,
auditable record of what CeraLive adds on top of upstream and why.

How to verify

  • Merge completeness: git merge-base master c63c311e88aa55e430e3b7d94b89d790994f88c4
    == c63c311e88aa55e430e3b7d94b89d790994f88c4 (upstream v1.5.6 fully contained).
  • Two parents: git log --merges -1 --format='%P' on the merge commit shows two SHAs.
  • CeraLive patches intact: SRTO_REORDERFREEZE still in srtcore/srt.h
    (= 120) and the two // CERALIVE reorder-freeze decay gates in srtcore/core.cpp;
    293ae6f (deterministic socket teardown) remains in ancestry.
  • Tests: full gtest suite green — cmake -B build -DENABLE_TESTING=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON && cmake --build build && ctest --test-dir build -> 100% of 291 tests pass (1 disabled: CTimer.SleeptoAccuracy, upstream
    baseline).

Risks

  • Merge method: this PR MUST be merge-commit merged, never squashed — squashing
    discards the upstream parent and permanently breaks merge-base tracking (root AGENTS.md
    Rule C, explicit exception).
  • CI workflow rename: upstream restructured its Linux test workflows
    (cxx03-ubuntu.yaml->ubuntu-c++03.yml, cxx11-ubuntu.yaml->ubuntu-c++11.yml). The
    CeraLive ccache coverage was carried onto the renamed files (matching the
    git-auto-detected macos/windows renames); no duplicate workflows remain.
  • ABI/SONAME unchanged (libsrt.so.1.5); no device-facing API change. The 1.5.6
    package release is a separate follow-up (Todo 3), not this PR.

SergioTx and others added 6 commits June 8, 2026 09:42
…aivision#3300)

* [CI] Added configuration for Linux with various matrix combinations

* Some minor fixes

* Fixed YAML syntax error

* Fixed C++ std spec

* Consolidated build options

* Fixed exclude list

* Fixed exclude list

* Fixed matrix combinations

* Replaced with two linear matrices

* Fixed description

* Changed names and split to single files

* Blocked matrix, added variants to C++03

* Fixed wrong config on C++03

* Fixed names

* Small fixes in crypto matrix

* Removed crypto builds. Added MinGW build

* Fixed MinGW typo. Added core handling for Linux

* Added more platforms with C++11. Unset -Werror for MinGW

* Added fixes per build break on MinGW

* More Windows fixes

* Fixed invalid specialization after fixing for Windows

* More fixes for Windows and MinGW

* Fixed invalid definition for UDP socket in testing apps

* Renamed Windows workflow

* Fixed multiple machines for Linux/C++11 syntax

* Linux matrix: blocked gdb for other than ubuntu-latest

* Linux matrix: blocked gdb for other than ubuntu-latest (fixed syntax error)

* Separated preinstallation action to track the problem

* Configured noenc on platforms with no SSL available

* Separated preinstallation action to track the problem 2

* Blocked installation except ubuntu-latest

* Removed slim as it has no access to cmake

---------

Co-authored-by: Mikołaj Małecki <mmalecki@haivision.com>
* Mimimum patch to fix spoofed MKREQ failure

* Fixed test to match the current internal conditions

* Removed rejection of KMX addressing the currently used key

* Simplified error value transfer

* Update to version 1.5.6

* [crypto] Added rollback for changed KEK when km_unwrap failed

* Fix KMREQ buffer overflow at the right place.

* [core] Fixed response for rogue KMREQ message

---------

Co-authored-by: Mikolaj Malecki <mmalecki@haivision.com>
Co-authored-by: Clément Gérouville <cgerouville@haivision.com>
Catch-up merge of Haivision/srt v1.5.6 (c63c311) into the CeraLive fork.
Brings the KMREQ heap-overflow hardening (CVE-2026-55868/55869, PR#3345)
and the intervening upstream fixes on top of the existing CeraLive patch set.

CeraLive patches preserved through the merge:
- SRTO_REORDERFREEZE opt-in reorder-tolerance decay freeze (srtcore/*)
- deterministic socket teardown (293ae6f)
- device runtime packaging + CI (runtime-package.yml, publish-release.yml)

Conflict resolution: upstream renamed and restructured its Linux CI test
workflows (cxx03-ubuntu.yaml -> ubuntu-c++03.yml, cxx11-ubuntu.yaml ->
ubuntu-c++11.yml). The CeraLive ccache coverage was carried onto the renamed
files, matching the macos/windows workflows git auto-detected as renames.
Add docs/CERALIVE-PATCHES.md as the canonical inventory of CeraLive changes on
top of upstream libsrt: the two functional C/C++ patches (SRTO_REORDERFREEZE
reorder-tolerance decay freeze at 66b3609, deterministic socket teardown at
293ae6f) each with commit SHA and rationale, plus the packaging/CI additions.

Update the AGENTS.md CI compiler-cache table for the upstream v1.5.6 workflow
rename (cxx03-ubuntu.yaml -> ubuntu-c++03.yml, cxx11-ubuntu.yaml ->
ubuntu-c++11.yml, cxx11-macos.yaml -> macos.yml, cxx11-win.yaml ->
windows-msvc-noenc.yml) and note the new uncached ubuntu-mingw.yml.
Upstream v1.5.6 restructured its CI and ships the encryption-OFF test lanes
(macos, windows, ubuntu-24.04-arm) with UNITTESTS=ON. Those lanes cannot build:
the crypto unit tests (test_crypto/test_cryspr) require a crypto backend that
ENABLE_ENCRYPTION=OFF does not provide -- they are red on upstream's own CI on
this exact commit.

Make the noenc lanes build-only smoke tests (UNITTESTS=OFF), mirroring upstream's
one passing noenc lane (Ubuntu MinGW), and drop the noenc ubuntu-24.04-arm matrix
entry. Full unit tests still run on every encryption-ON lane (Ubuntu C++11 +
C++03) plus the device runtime-package build. macos additionally drops
WARNING_AS_ERROR (clang flags the encryption-only m_bErrorReported field, which is
unused under noenc).
@andrescera
andrescera merged commit a486812 into master Jul 21, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants