This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix "Remove . from $PATH"


Fix CT_SanitizePath

Replace the over-engineered and buggy test in CT_SanitizePath
with a straight forward string pattern match, and also
handle empty PATH elements which are qeuivalent to ".".

Thanks-To: Arnaud Lacombe <lacombar@gmail.com>
Signed-off-by: Johannes Stezenbach <js@sig21.net>

diff -r fdaa6c7f6dea scripts/functions
--- a/scripts/functions	Thu Jul 29 19:47:16 2010 +0200
+++ b/scripts/functions	Fri Jul 30 16:36:57 2010 +0200
@@ -137,18 +137,16 @@
     CT_DoLog ${level:-INFO} "(elapsed: ${elapsed_min}:${elapsed_sec}.${elapsed_csec})"
 }
 
-# Remove entries referring to ., /tmp and non-existing directories from $PATH
+# Remove entries referring to . and other relative paths
 # Usage: CT_SanitizePath
 CT_SanitizePath() {
     local new
-    local tmp
+    local p
     local IFS=:
     for p in $PATH; do
-        # Replace any occurence of . with $(pwd -P)
-        # Use /tmp as a default if the directory is non-existent
-        # Do not add /tmp in the PATH
-        tmp="$( cd /tmp; cd "${p}" 2>/dev/null || true; pwd -P )"
-        if [ "${tmp}" != "/tmp" ]; then
+        # Only accept absolute paths;
+        # Note: as a special case the empty string in PATH is equivalent to .
+        if [ -n "${p}" -a -z "${p%%/*}" ]; then
             new="${new}${new:+:}${p}"
         fi
     done

--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]