Houmgaor
34f0e89e7b
fix(savedata): guard against sub-minimum backup data in recovery
...
nullcomp's passthrough path returns non-cmp-header data as-is without
error, which is correct for old uncompressed saves. However, a corrupt
backup slot containing garbage shorter than the minimum save layout
(100 bytes) would pass Decompress() and then panic in
updateStructWithSaveData() with a slice-bounds error at the name field
read (offset 88–100).
Add a minSaveSize check after each backup decompresses; skip the slot
if the result is too small. Also document the campaign system and the
fix in CHANGELOG under Unreleased.
2026-03-20 11:46:01 +01:00
..
2026-03-17 19:03:43 +01:00
2026-02-27 17:29:32 +01:00
2026-02-27 17:29:32 +01:00
2026-03-17 19:21:55 +01:00
2026-03-01 18:56:52 +01:00
2026-02-23 21:28:30 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-05 18:00:30 +01:00
2026-03-05 18:00:30 +01:00
2026-02-26 23:41:44 +01:00
2026-03-20 11:22:25 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-19 19:28:30 +01:00
2026-03-20 11:46:01 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-23 21:28:30 +01:00
2026-02-27 13:45:56 +01:00
2026-02-23 21:28:30 +01:00
2026-02-26 23:41:44 +01:00
2026-03-17 19:21:55 +01:00
2026-03-19 10:57:09 +01:00
2026-02-24 13:55:49 +01:00
2026-03-05 18:00:30 +01:00
2026-03-18 12:09:44 +01:00
2026-03-18 12:09:44 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-03-18 23:19:25 +01:00
2026-03-10 11:28:11 +01:00
2026-03-10 11:19:22 +01:00
2026-02-24 14:13:20 +01:00
2026-02-24 13:55:49 +01:00
2026-03-05 16:39:15 +01:00
2026-03-02 19:43:11 +01:00
2026-02-26 23:41:44 +01:00
2026-02-27 11:33:25 +01:00
2026-02-24 14:13:20 +01:00
2026-02-27 11:33:25 +01:00
2026-02-24 14:13:20 +01:00
2026-03-02 19:43:11 +01:00
2026-02-26 23:41:44 +01:00
2026-03-05 18:00:30 +01:00
2026-03-06 00:15:53 +01:00
2026-03-05 18:00:30 +01:00
2026-03-03 18:04:33 +01:00
2026-02-26 23:41:44 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-02-27 11:33:13 +01:00
2026-03-19 10:57:09 +01:00
2026-02-24 15:34:51 +01:00
2026-03-19 14:35:38 +01:00
2026-03-20 11:22:25 +01:00
2026-02-24 14:13:20 +01:00
2026-02-24 00:05:56 +01:00
2026-03-05 18:00:30 +01:00
2026-03-05 16:39:15 +01:00
2026-03-19 14:35:38 +01:00
2026-03-19 10:57:09 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-17 19:03:43 +01:00
2026-02-26 23:41:44 +01:00
2026-03-20 11:22:25 +01:00
2026-03-19 10:57:09 +01:00
2026-02-23 21:28:30 +01:00
2026-03-02 20:12:39 +01:00
2026-03-02 20:12:39 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-23 21:28:30 +01:00
2026-02-26 23:41:44 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 14:35:38 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 21:57:40 +01:00
2026-03-17 19:11:59 +01:00
2026-03-19 14:35:38 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-05 16:39:15 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-23 21:28:30 +01:00
2026-02-27 11:33:13 +01:00
2026-02-27 11:21:37 +01:00
2026-03-19 10:57:09 +01:00
2026-02-23 21:28:30 +01:00
2026-03-17 19:03:43 +01:00
2026-03-19 18:20:00 +01:00
2026-03-19 18:20:00 +01:00
2026-03-19 18:20:00 +01:00
2026-03-19 23:59:34 +01:00
2026-03-19 23:59:34 +01:00
2026-03-20 00:07:34 +01:00
2026-03-20 00:07:34 +01:00
2026-03-05 23:05:55 +01:00
2026-03-18 12:14:31 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-18 10:48:52 +01:00
2026-03-19 19:28:30 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-18 12:09:44 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-16 00:07:46 +01:00
2026-03-10 11:28:11 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-02 19:43:11 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-19 19:28:30 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-19 19:28:30 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-02-23 21:28:30 +01:00
2026-03-05 23:05:55 +01:00
2026-03-18 11:35:31 +01:00
2026-03-18 11:35:31 +01:00
2026-02-24 16:12:40 +01:00
2026-02-27 11:33:25 +01:00
2026-03-10 11:28:11 +01:00
2026-03-10 11:28:11 +01:00
2026-02-24 14:13:20 +01:00
2026-02-24 00:05:56 +01:00
2026-02-24 14:13:20 +01:00
2026-02-24 00:05:56 +01:00
2026-02-24 16:07:37 +01:00
2026-02-24 16:07:37 +01:00
2026-02-23 19:34:30 +01:00
2026-03-19 23:59:34 +01:00
2026-03-20 00:07:34 +01:00
2026-02-23 21:28:30 +01:00
2026-02-23 21:28:30 +01:00
2026-03-06 00:15:53 +01:00
2026-02-23 21:28:30 +01:00
2026-02-26 23:41:44 +01:00
2026-02-23 21:28:30 +01:00
2026-02-24 16:12:40 +01:00
2026-03-05 23:05:55 +01:00