bugs.md #6: Genereller RouterOS-Antwort-Parser trunkiert mehrwortige Werte #18

Closed
opened 2026-09-17 21:10:03 +02:00 by kay · 0 comments
Owner

Quelle: bugs.md #6 (Deep-Dive Runde 2, 2026-09-17)
Confidence: sehr hoch — live gegen zwei unabhängige Menüs nachgewiesen (/ip firewall address-list, /interface ethernet, RouterOS 7.24.4)

RouterOSCliParser.keyValues(from:) nahm an, print terse quote mehrwortige Werte in Anführungszeichen. RouterOS quotet dort tatsächlich gar nichts — ein Kommentar "multi word test value" kommt als literales, unquotiertes comment=multi word test value name=ether2 ... zurück. Der alte Regex-Parser schnitt den Wert beim ersten Leerzeichen ab, der Rest ging kommentarlos verloren.

Betrifft praktisch jedes mehrwortige Freitextfeld über den generischen Parser (v.a. Experte-Tab "Weitere Parameter (frei)"). War bereits indirekt im eigenen Testcode sichtbar (testParseInterfacesMatchesLiveHexOutput, echter Gerätedump), fiel aber nie auf, weil das betroffene Feld nirgends gelesen wurde.

Fix: keyValues von Regex-Matching auf Token-Scanning umgestellt — ein Wort startet nur dann ein neues Feld, wenn es selbst wie key=... aussieht.

Verifikation: Neuer Regressionstest, abgeleitet vom echten Live-Dump. Build + 101 Unit-Tests grün.

**Quelle:** bugs.md #6 (Deep-Dive Runde 2, 2026-09-17) **Confidence:** sehr hoch — live gegen zwei unabhängige Menüs nachgewiesen (`/ip firewall address-list`, `/interface ethernet`, RouterOS 7.24.4) `RouterOSCliParser.keyValues(from:)` nahm an, `print terse` quote mehrwortige Werte in Anführungszeichen. RouterOS quotet dort tatsächlich **gar nichts** — ein Kommentar "multi word test value" kommt als literales, unquotiertes `comment=multi word test value name=ether2 ...` zurück. Der alte Regex-Parser schnitt den Wert beim ersten Leerzeichen ab, der Rest ging kommentarlos verloren. Betrifft praktisch jedes mehrwortige Freitextfeld über den generischen Parser (v.a. Experte-Tab "Weitere Parameter (frei)"). War bereits indirekt im eigenen Testcode sichtbar (`testParseInterfacesMatchesLiveHexOutput`, echter Gerätedump), fiel aber nie auf, weil das betroffene Feld nirgends gelesen wurde. **Fix:** `keyValues` von Regex-Matching auf Token-Scanning umgestellt — ein Wort startet nur dann ein neues Feld, wenn es selbst wie `key=...` aussieht. **Verifikation:** Neuer Regressionstest, abgeleitet vom echten Live-Dump. Build + 101 Unit-Tests grün.
kay closed this issue 2026-09-17 21:10:03 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kay/RouterOS#18