summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-03-06 00:23:32 +0000
committerZac Medico <zmedico@gentoo.org>2008-03-06 00:23:32 +0000
commit3914c583172c82ca50668acce58edf278fbef56d (patch)
tree5ef49b42a08bfd209ba216e242cb60f8fe5f7d90
parentUpdate the description to reflect the new meaning of PATTERN. (diff)
downloadportage-idfetch-3914c583172c82ca50668acce58edf278fbef56d.tar.gz
portage-idfetch-3914c583172c82ca50668acce58edf278fbef56d.tar.bz2
portage-idfetch-3914c583172c82ca50668acce58edf278fbef56d.zip
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
-rwxr-xr-xbin/ebuild.sh9
-rwxr-xr-xbin/filter-bash-environment.py10
2 files changed, 11 insertions, 8 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index 061e1961..542fca9e 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 8f4b6d0c..ab348d99 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()