summaryrefslogtreecommitdiff
path: root/src/shared/install.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-09-10 12:07:51 +0100
committerMartin Pitt <martin.pitt@ubuntu.com>2016-09-10 13:07:51 +0200
commitae9efab711e7478b4f035edd00824d518bcf0d3c (patch)
tree974dbcfa996a363200aac5192122d0da7b4f889c /src/shared/install.c
parent4245eb507295522699215e35418c4c2716d6687c (diff)
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.
Diffstat (limited to 'src/shared/install.c')
-rw-r--r--src/shared/install.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/shared/install.c b/src/shared/install.c
index 11770d887f..5f12fb447f 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);