Don't allow . or .. in live.persist paths.
authorTails developers <amnesia@boum.org>
Mon, 20 Feb 2012 10:44:04 +0000 (11:44 +0100)
committerDaniel Baumann <daniel@debian.org>
Thu, 5 Apr 2012 05:46:56 +0000 (07:46 +0200)
Allowing it could cause serious breakage, and there's absolutely no
need for it.

scripts/live-helpers

index f13be57..26783f1 100644 (file)
@@ -1281,10 +1281,15 @@ get_custom_mounts ()
                                dest="${source}"
                        fi
 
-                       if echo ${dest} | grep -qe "^/\+$\|^/\+live\(/.*\)\?$"
+                       if trim_path ${source} | grep -qe "^\(.*/\)\?\.\.\?\(/.*\)\?$"
                        then
-                               # mounting on / or /live could cause trouble
-                               log_warning_msg "Skipping unsafe custom mount on ${dest}"
+                               log_warning_msg "Skipping unsafe custom mount with source ${source}: the source is a relative or absolute path w.r.t. the persistent media root and cannot use \".\" or \"..\""
+                               continue
+                       fi
+
+                       if trim_path ${dest} | grep -q -e "^/$" -e "^/live\(/.*\)\?$" -e "^/\(.*/\)\?\.\.\?\(/.*\)\?$"
+                       then
+                               log_warning_msg "Skipping unsafe custom mount with desination ${dest}: the destination must be an absolute path using neither \".\" nor \"..\", and cannot be /live (or any sub-directory therein) or / (for the latter, use ${root_overlay_label}-type persistence instead)"
                                continue
                        fi
 
@@ -1481,6 +1486,6 @@ fix_home_rw_compatibility ()
        if [ ! -r "${include_list}" ]
        then
                echo "# home-rw backwards compatibility:
-. /home" > "${include_list}"
+/ /home" > "${include_list}"
        fi
 }