summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnehaak <45362083+arnehaak@users.noreply.github.com>2018-11-29 00:01:32 +0100
committerDaniil Baturin <daniil@baturin.org>2018-11-29 01:50:35 +0100
commite2aca14130f3a1a4587764af2dee9c733a4a8b02 (patch)
tree00321fadae89a4be4e7ab973f0dd0b955c3f3bef
parent6dfe0bcfd77c094d750c400193e525a51fa30273 (diff)
downloadvyos-1x-e2aca14130f3a1a4587764af2dee9c733a4a8b02.tar.gz
vyos-1x-e2aca14130f3a1a4587764af2dee9c733a4a8b02.zip
T1001: Bugfix: Handle backslashes in values with "show configuration commands"
This script is usually called with the output of "cli-shell-api showCfg", which does not escape backslashes. "ConfigTree()" expects escaped backslashes when parsing a config string (and also prints them itself). Therefore this script would fail. Manually escape backslashes here to handle backslashes in any configuration strings properly. The alternative would be to modify the output of "cli-shell-api showCfg", but that may be break other things who rely on that specific output. This fixes https://phabricator.vyos.net/T1001
-rwxr-xr-xsrc/utils/vyos-config-to-commands8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/utils/vyos-config-to-commands b/src/utils/vyos-config-to-commands
index 8b50f7c5d..7147bc5ff 100755
--- a/src/utils/vyos-config-to-commands
+++ b/src/utils/vyos-config-to-commands
@@ -19,6 +19,14 @@ else:
except OSError as e:
print("Could not read config file {0}: {1}".format(file_name, e), file=sys.stderr)
+# This script is usually called with the output of "cli-shell-api showCfg", which does not
+# escape backslashes. "ConfigTree()" expects escaped backslashes when parsing a config
+# string (and also prints them itself). Therefore this script would fail.
+# Manually escape backslashes here to handle backslashes in any configuration strings
+# properly. The alternative would be to modify the output of "cli-shell-api showCfg",
+# but that may be break other things who rely on that specific output.
+config_string = config_string.replace("\\", "\\\\")
+
try:
config = ConfigTree(config_string)
commands = config.to_commands()