mORMot2 DailyDaily read of upstream commits

Win64 ABI fix in cryptographic block mixing

Today brings a single but important fix for Windows x64 applications using mORMot2 cryptography. A low-level assembly routine was violating the calling convention by not preserving certain XMM registers, which could cause unpredictable behaviour in the calling code.

TL;DR

  • SBlockMix assembly now correctly preserves XMM8-XMM11 registers on Win64.

Upgrade advice

Teams running Win64 backends that utilize mORMot's cryptography (such as scrypt or specific block algorithms) should pull this update to prevent potential register corruption.

Build2.4.16628 → 2.4.16629
Commits1
Lines+12 -2
Read1 min

1 of 1 entries · 1 commits upstream

# Entry Category Units
1 Medium Assembly routine corrupted XMM registers on Win64 The inline assembly for SBlockMix in mormot.crypt.other was modified for the ABIWINX64 target. It now subtracts 72 bytes from the stack pointer and uses movaps to save registers xmm8, xmm9, xmm10, and xmm11 before execution, restoring them afterwards. Fixes mormot.crypt.other 2c1daf90+12-2

crypt: fixed SBlockMix Win64 asm

Impact

Previously, invoking SBlockMix on Win64 would overwrite non-volatile XMM registers without restoring them, violating the Windows x64 calling convention. This could lead to unpredictable bugs or access violations in the caller's state.

Arnaud Bouchez · 15:12 UTC · view the commit on GitHub →

Upstream activity commits per day · last 60 days
Commits977
Active days44/60
Busiest2026-09-30
Peak60
2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 26 commits2026-08-28: 11 commits2026-08-29: 10 commits2026-08-30: 1 commit2026-08-31: 23 commits2026-09-01: 0 commits2026-09-02: 20 commits2026-09-03: 29 commits2026-09-04: 35 commits2026-09-05: 13 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 23 commits2026-09-09: 10 commits2026-09-10: 17 commits2026-09-11: 23 commits2026-09-12: 14 commits2026-09-13: 9 commits2026-09-14: 7 commits2026-09-15: 4 commits2026-09-16: 24 commits2026-09-17: 26 commits2026-09-18: 21 commits2026-09-19: 59 commits2026-09-20: 13 commits2026-09-21: 5 commits2026-09-22: 34 commits2026-09-23: 17 commits2026-09-24: 57 commits2026-09-25: 22 commits2026-09-26: 26 commits2026-09-27: 0 commits2026-09-28: 2 commits2026-09-29: 19 commits2026-09-30: 60 commits2026-10-01: 26 commits2026-10-02: 30 commits2026-10-03: 32 commits2026-10-04: 15 commits2026-10-05: 1 commit2026-10-06: 26 commits2026-10-07: 37 commits2026-10-08: 27 commits2026-10-09: 35 commits2026-10-10: 33 commits2026-10-11: 9 commits2026-10-12: 11 commits2026-10-13: 35 commits
2026-08-152026-10-13