Skip to content

Do not mistake a bracketed object name for a replacemsg placeholder - #910

Open
ggiesen wants to merge 1 commit into
networktocode:developfrom
ggiesen:fix-fortinet-bracket
Open

Do not mistake a bracketed object name for a replacemsg placeholder#910
ggiesen wants to merge 1 commit into
networktocode:developfrom
ggiesen:fix-fortinet-bracket

Conversation

@ggiesen

@ggiesen ggiesen commented Sep 10, 2026

Copy link
Copy Markdown

Fixes #908.

_parse_out_offending() moves a config system replacemsg buffer aside and leaves a ["<name>"] placeholder, which _build_nested_config() restores. The restore was guarded by the presence of a bracket alone, so any line containing one was taken for a placeholder, and a lookup miss raised ValueError: Input line is malformed. out of __init__, losing the whole config.

_build_nested_config() receives the first indented line of a top-level block, so an object name with a bracket there is enough to trigger it:

config firewall address
    edit "obj[1]"
        set subnet 10.0.0.0 255.0.0.0
    next
end

The guard now also requires the quoted key to be one that _get_uncommon_lines() produced, and leaves the line alone otherwise.

Tests cover both the bracketed name and a genuine placeholder still being restored. 823 passed, 6 skipped; ruff, pylint and mypy clean.

_parse_out_offending moves a config system replacemsg buffer aside and leaves a
["<name>"] placeholder, which _build_nested_config restores. The restore was
guarded by the presence of a bracket alone, so any line containing one was taken
for a placeholder, and a lookup miss raised ValueError out of __init__ and lost
the whole configuration.

_build_nested_config receives the first indented line of a top-level block, so
an object name with a bracket there was enough to trigger it. The guard now also
requires the quoted key to be one that _get_uncommon_lines produced, and leaves
the line alone otherwise.

Fixes networktocode#908
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.

FortinetConfigParser: an object name containing '[' raises ValueError: Input line is malformed.

1 participant