From: Zbigniew Jędrzejewski-Szmek Date: Sat, 10 Sep 2016 11:07:51 +0000 (+0100) Subject: shared/install: fix set-default with empty root (#4118) X-Git-Tag: v232~224 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ae9efab711e7478b4f035edd00824d518bcf0d3c;p=thirdparty%2Fsystemd.git shared/install: fix set-default with empty root (#4118) https://bugzilla.redhat.com/show_bug.cgi?id=1374371 When root was empty or equal to "/", chroot_symlinks_same was called with root==NULL, and strjoina returned "", so the code thought both paths are equal even if they were not. Fix that by always providing a non-null first argument to strjoina. --- diff --git a/src/shared/install.c b/src/shared/install.c index 11770d887fc..5f12fb447f8 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -403,6 +403,9 @@ static bool chroot_symlinks_same(const char *root, const char *wd, const char *a /* This will give incorrect results if the paths are relative and go outside * of the chroot. False negatives are possible. */ + if (!root) + root = "/"; + a = strjoina(path_is_absolute(a) ? root : wd, "/", a); b = strjoina(path_is_absolute(b) ? root : wd, "/", b); return path_equal_or_files_same(a, b);