From f988876b9b887cb3229a39dc44688220ef5a6753 Mon Sep 17 00:00:00 2001 From: netblue30 Date: Tue, 15 May 2018 10:53:39 -0400 Subject: fix --dns --- src/firejail/fs_hostname.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/firejail/fs_hostname.c b/src/firejail/fs_hostname.c index fd823b812..1884f6597 100644 --- a/src/firejail/fs_hostname.c +++ b/src/firejail/fs_hostname.c @@ -124,6 +124,7 @@ void fs_resolvconf(void) { if (asprintf(&dest, "%s/%s", RUN_DNS_ETC, entry->d_name) == -1) errExit("asprintf"); + int symlink_done = 0; if (is_link(src)) { char *rp =realpath(src, NULL); if (rp == NULL) { @@ -133,14 +134,19 @@ void fs_resolvconf(void) { } if (symlink(rp, dest)) errExit("symlink"); + else + symlink_done = 1; } else if (S_ISDIR(s.st_mode)) create_empty_dir_as_root(dest, s.st_mode); else create_empty_file_as_root(dest, s.st_mode); + // bind-mount src on top of dest - if (mount(src, dest, NULL, MS_BIND|MS_REC, NULL) < 0) - errExit("mount bind mirroring /etc"); + if (!symlink_done) { + if (mount(src, dest, NULL, MS_BIND|MS_REC, NULL) < 0) + errExit("mount bind mirroring /etc"); + } fs_logger2("clone", src); free(src); -- cgit v1.2.3-70-g09d2