Details
-
Bug
-
Status: Open (View Workflow)
-
Critical
-
Resolution: Unresolved
-
13.0.1
-
None
-
None
-
MariaDB Server 13.0.1 (tag mariadb-13.0.1); also present on main tip. Confirmed by source review on macOS arm64.
-
Can result in hang or crash
-
Q3/2026 Server Development
Description
In `storage/maria/ma_key_recover.c`, `_ma_apply_redo_index()` handles `KEY_OP_DEL_PREFIX` as:
```c
case KEY_OP_DEL_PREFIX:
uint length= uint2korr(header);
header+= 2;
DBUG_ASSERT(length <= page_length - keypage_header);
bmove(buff + keypage_header, buff + keypage_header + length,
page_length - keypage_header - length);
page_length-= length;
```
In release builds (`DBUG_OFF`), the assert is a no-op. If redo supplies `length > page_length - keypage_header`, then:
- `page_length - keypage_header - length` underflows (unsigned)
- `bmove` is called with a huge size
- `page_length-= length` also wraps
A corrupt `LOGREC_REDO_INDEX` applied during Aria recovery can therefore trigger a large out-of-bounds move.- Impact
Crash recovery / redo apply can crash or corrupt memory on a malformed DEL_PREFIX redo record.
- Impact