Skip to content

fix(remotectl): fix four bugs in parser - #2681

Draft
directionless wants to merge 1 commit into
kolide:mainfrom
directionless:seph/fix-remotectl
Draft

fix(remotectl): fix four bugs in parser#2681
directionless wants to merge 1 commit into
kolide:mainfrom
directionless:seph/fix-remotectl

Conversation

@directionless

Copy link
Copy Markdown
Contributor

extractKeyValue used strings.Split so values containing the delimiter (e.g. URLs with colons) triggered an error and dropped the device. parseObjectArray accessed arrayResults[len-1] without a bounds check, panicking when a property-level line appeared before any item. getCurrentIndentationLevel used strings.LastIndex instead of counting leading tabs, misreporting the nesting depth when values contained tabs. parseDumpstate unconditionally advanced the scanner after each parseDevice call; when a sub-parser consumed the next device name as its exit condition, the first property of that device was silently dropped.

  • extractKeyValue: use SplitN(..., 2) to preserve delimiters in values
  • parseObjectArray: guard against empty arrayResults before index access
  • getCurrentIndentationLevel: count leading tabs with a loop
  • parseDumpstate: reuse p.lastReadLine when it already holds a device name instead of always advancing the scanner

extractKeyValue used strings.Split so values containing the delimiter
(e.g. URLs with colons) triggered an error and dropped the device.
parseObjectArray accessed arrayResults[len-1] without a bounds check,
panicking when a property-level line appeared before any item.
getCurrentIndentationLevel used strings.LastIndex instead of counting
leading tabs, misreporting the nesting depth when values contained tabs.
parseDumpstate unconditionally advanced the scanner after each
parseDevice call; when a sub-parser consumed the next device name as its
exit condition, the first property of that device was silently dropped.

- extractKeyValue: use SplitN(..., 2) to preserve delimiters in values
- parseObjectArray: guard against empty arrayResults before index access
- getCurrentIndentationLevel: count leading tabs with a loop
- parseDumpstate: reuse p.lastReadLine when it already holds a device
  name instead of always advancing the scanner

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant