base-files: add some safety checks in profile

Add some safety checks when sourcing files in /etc/profile.d/, in particular:
- source only *.sh files, not every file. This is the practice in use in both
  Fedora and Debian/Ubuntu (see
  https://help.ubuntu.com/community/EnvironmentVariables#A.2Fetc.2Fprofile.d.2F.2A.sh);
- check the input is actually a file and is readable. This check is especially
  important if profile.d is empty, as "*.sh" will get expanded only if
  profile.d is not empty. Previously if profile.d was present but empty,
  "/etc/profile.d/*" was sourced causing errors on login and breaking stuff, for
  example X startup.

(From OE-Core rev: 8961bc4b71723477a3b4a837a1d9c25c1b860b9e)

Signed-off-by: Diego Rondini <diego.ml@zoho.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Diego Rondini
2016-04-29 12:24:09 +02:00
committed by Richard Purdie
parent 548e55c334
commit 0aba7d5d36

View File

@@ -20,8 +20,10 @@ if [ "$PS1" ]; then
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/* ; do
. $i
for i in /etc/profile.d/*.sh ; do
if [ -f $i -a -r $i ]; then
. $i
fi
done
unset i
fi