Files
OrcaSlicer/src/libslic3r
HanifKoh 490d134507 Harden 3MF Loading Against Malformed Plate IDs and Paint Data (#15959)
* Reject 3MF Plate IDs Below 1 Instead of Indexing Before the Plate List

The plate importer copied each plater_id from model_settings.config into the
1-based plate list after checking only the upper bound, so plater_id="0"
wrote to plate_data_list[-1] and crashed on load. Both copy sites now reject
ids below 1 with the same "invalid plate index" error already used for ids
past the end.

* Drop Malformed 3MF Paint Data Instead of Reading Past the Bitstream

Painted facets are decoded from a bitstream a nibble at a time with no bound
check, so a truncated or corrupt paint string in a 3MF (for example split
codes with no children behind them) read past the end and crashed on load and
slice. A one- or two-side split naming side 3 also indexed past the triangle's
vertices.

Every nibble read now goes through a bounds-checked reader. Loading validates
each triangle's tree and drops a malformed one with a warning, so the stored
data, used extruder states and later decoding all agree. deserialize() also
unwinds and clears any triangle whose tree is incomplete or malformed, and
has_facets() stops at a truncated triangle. Valid streams decode unchanged.
2026-09-29 02:31:26 +08:00
..
2024-10-05 21:53:16 +03:00
2026-06-18 09:13:51 -03:00
2026-08-23 22:43:41 +08:00
2026-08-04 21:56:15 +08:00
2026-09-22 20:50:18 -03:00
2026-03-13 02:12:10 -07:00
…
2025-06-14 21:05:25 +08:00
2026-04-23 00:21:19 +08:00
2025-10-28 15:29:47 +08:00
2026-03-24 09:18:38 -07:00
2026-08-23 22:11:48 +08:00
…
2026-03-24 09:18:38 -07:00
2025-09-18 17:08:18 +08:00
2025-09-18 17:08:18 +08:00
2025-12-08 22:42:11 +08:00
2026-03-13 01:56:51 -07:00
2026-07-02 17:49:36 +08:00
2026-07-02 17:49:36 +08:00
2026-03-13 01:56:51 -07:00
2026-03-13 01:56:51 -07:00
2025-12-08 22:42:11 +08:00
2026-05-10 02:21:13 +08:00
2026-07-27 19:52:29 -03:00
2026-07-27 19:52:29 -03:00
…
…
2026-01-29 19:19:37 +08:00
2026-01-23 17:05:56 +08:00
…
2025-12-08 22:42:11 +08:00
2025-12-08 22:42:11 +08:00