userdb: Respect $HOME for the home directory of our own uid
authorSimon McVittie <smcv@debian.org>
Fri, 28 Jul 2017 07:38:20 +0000 (08:38 +0100)
committerSimon McVittie <smcv@debian.org>
Fri, 28 Jul 2017 15:12:24 +0000 (16:12 +0100)
commit3f377c511301cfb36bfa93fddf1f59ace8580749
tree86912b385812a3d9957049b738d26a1f7cd27e96
parent94f6c651f835411bb8c2c08f6d7b33397447ea40
userdb: Respect $HOME for the home directory of our own uid

This lets cooperating processes with the same value of $HOME
interoperate for DBUS_COOKIE_SHA1 by reading and writing $HOME, even
if their $HOME differs from the uid's "official" home directory
according to getpwuid(). Out of paranoia, we only do this if the uid
and the euid are equal, since if they were unequal the correct thing
to do would be ambiguous.

In particular, Debian autobuilders run as a user whose "official"
home directory in /etc/passwd is "/nonexistent", as a mechanism to
detect non-deterministic build processes that rely on the contents of
the home directory. Until now, this meant we couldn't run dbus'
build-time tests, because every test that used DBUS_COOKIE_SHA1 would
fail in this environment.

In the tests, set HOME as well as DBUS_TEST_HOMEDIR. We keep
DBUS_TEST_HOMEDIR too, because Windows doesn't use HOME, only HOMEDRIVE
and HOMEPATH.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=101960
Bug-Debian: https://bugs.debian.org/630152
Signed-off-by: Simon McVittie <smcv@debian.org>
Reviewed-by: Philip Withnall <withnall@endlessm.com>
dbus/dbus-sysdeps-unix.c
dbus/dbus-userdb.c
test/Makefile.am