Hi Orion
On Sat, Aug 1, 2015 at 2:36 PM, David Herrmann <dh.herrmann(a)gmail.com> wrote:
> sendmsg(4, {msg_name(0)=NULL,
>
msg_iov(2)=[{"l\1\0\1<\21\0\0\2\0\0\0\223\0\0\0\1\1o\0\25\0\0\0/org/freedesktop/DBus\0\0\0\6\1s\0\24\0\0\0org.freedesktop.DBus\0\0\0\0\2\1s\0\24\0\0\0org.freedesktop.DBus\0\0\0\0\3\1s\0\33\0\0\0UpdateActivationEnvironment\0\0\0\0\0\10\1g\0\5a{ss}\0\0\0\0\0\0",
> 168}, {"4\21\0\0\0\0\0\0\22\0\0\0BASH_FUNC_module()\0\0)\0\0\0() { eval
> `/usr/bin/modulecmd bash
You export a variable called 'BASH_FUNC_module()' (which is how bash
names its exported functions since the ShellShock updates). According
to POSIX, names of environment variables should only contain
[A-Za-z0-9_], which is what systemd enforces. Hence, systemd refuses
the trailing parantheses in this name.
Anyway, POSIX also explicitly says that applications should tolerate
any other character (except '='). This needs to be fixed in pid1.
This should now be fixed in -git [1]. We drop any variables that do
not conform to POSIX recommendations in UpdateActivationEnvironment().
This means, BASH_FUNC_module() will not end up in your activation
environment. But I assume that this is more or less the intended
behavior.
Next systemd update in rawhide will include this fix.
Thanks for the report!
David
[1]
https://github.com/systemd/systemd/pull/858