1
0
mirror of /repos/baseimage-docker.git synced 2026-02-26 17:32:03 +01:00

my_init container_environment.sh: ensure that environment variable names don't include characters unsupported by Bash

Closes GH-230.
This commit is contained in:
Hongli Lai (Phusion)
2015-07-15 15:12:18 +02:00
parent b72ef2eba3
commit 43af4a393e
2 changed files with 7 additions and 1 deletions

View File

@@ -9,6 +9,8 @@ LOG_LEVEL_WARN = 1
LOG_LEVEL_INFO = 2
LOG_LEVEL_DEBUG = 3
SHENV_NAME_WHITELIST_REGEX = re.compile('[^\w\-_\.]')
log_level = None
terminated_child_processes = {}
@@ -84,7 +86,7 @@ def export_envvars(to_dir = True):
if to_dir:
with open("/etc/container_environment/" + name, "w") as f:
f.write(value)
shell_dump += "export " + shquote(name) + "=" + shquote(value) + "\n"
shell_dump += "export " + sanitize_shenvname(name) + "=" + shquote(value) + "\n"
with open("/etc/container_environment.sh", "w") as f:
f.write(shell_dump)
with open("/etc/container_environment.json", "w") as f:
@@ -103,6 +105,9 @@ def shquote(s):
# the string $'b is then quoted as '$'"'"'b'
return "'" + s.replace("'", "'\"'\"'") + "'"
def sanitize_shenvname(s):
return re.sub(SHENV_NAME_WHITELIST_REGEX, "_", s)
# Waits for the child process with the given PID, while at the same time
# reaping any other child processes that have exited (e.g. adopted child
# processes that have terminated).