summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnehaak <45362083+arnehaak@users.noreply.github.com>2018-11-29 00:01:32 +0100
committerGitHub <noreply@github.com>2018-11-29 00:01:32 +0100
commitbf55a3a40f1e247b944eea266d4cd384d20087d1 (patch)
tree63151c1e695b579a6f34aae6710be3992821d950
parentbd536044ce753e1cc40753c296752b4303291021 (diff)
downloadvyos-1x-bf55a3a40f1e247b944eea266d4cd384d20087d1.tar.gz
vyos-1x-bf55a3a40f1e247b944eea266d4cd384d20087d1.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()