From 3914c583172c82ca50668acce58edf278fbef56d Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 6 Mar 2008 00:23:32 +0000 Subject: [PATCH] Move the variable name validation regexes (for bug 211949) into filter-bash-environment.py instead of passing them in from bash. svn path=/main/trunk/; revision=9445 --- bin/ebuild.sh | 9 +++------ bin/filter-bash-environment.py | 10 ++++++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 061e1961c..542fca9e2 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -1424,12 +1424,7 @@ filter_readonly_variables() { SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB SANDBOX_LOG SANDBOX_ON" filtered_vars="${readonly_bash_vars} ${READONLY_PORTAGE_VARS} - BASH_[_[:alnum:]]* PATH - [[:digit:]][_[:alnum:]]* - .*[^_[:alnum:]].*" - # TODO: Take the above variable name validation and the below sed-based - # declare -r filter and integrate them both directly into - # filter-bash-environment.py. + BASH_[_[:alnum:]]* PATH" if hasq --filter-sandbox $* ; then filtered_vars="${filtered_vars} SANDBOX_[_[:alnum:]]*" else @@ -1446,6 +1441,8 @@ filter_readonly_variables() { " fi + # TODO: Take the the below sed-based declare -r filter and integrate it + # directly into filter-bash-environment.py. # The sed is to remove the readonly attribute from variables such as those # listed in READONLY_EBUILD_METADATA, since having any readonly attributes # persisting in the saved environment can be inconvenient when it diff --git a/bin/filter-bash-environment.py b/bin/filter-bash-environment.py index 8f4b6d0cb..ab348d992 100755 --- a/bin/filter-bash-environment.py +++ b/bin/filter-bash-environment.py @@ -69,7 +69,7 @@ def filter_bash_environment(pattern, file_in, file_out): here_doc_delim = re.compile("^%s$" % here_doc.group(1)) file_out.write(line) continue - # Note: here-documents are handled before fuctions since otherwise + # Note: here-documents are handled before functions since otherwise # it would be possible for the content of a here-document to be # mistaken as the end of a function. if in_func: @@ -103,7 +103,13 @@ if __name__ == "__main__": parser.error("Missing required PATTERN argument.") file_in = sys.stdin file_out = sys.stdout - var_pattern = "^(%s)$" % "|".join(args[0].split()) + var_pattern = args[0].split() + + # Filter invalid variable names that are not supported by bash. + var_pattern.append(r'\d.*') + var_pattern.append(r'.*\W.*') + + var_pattern = "^(%s)$" % "|".join(var_pattern) filter_bash_environment( compile_egrep_pattern(var_pattern), file_in, file_out) file_out.flush() -- 2.26.2