From b66559b11f192ee2b4f8e1d7acbe667bb75b77fd Mon Sep 17 00:00:00 2001 From: Richard Weinberger Date: Tue, 9 Sep 2014 11:09:37 +0200 Subject: [PATCH] systemd-tmpfiles: Fix IGNORE_DIRECTORY_PATH age handling If one has a config like: d /tmp 1777 root root - X /tmp/important_mount All files below /tmp/important_mount will be deleted as the /tmp/important_mount item will spuriously inherit a max age of 0 from /tmp. /tmp has a max age of 0 but age_set is (of course) false. This affects also the PrivateTmp feature of systemd. All tmp files of such services will be deleted unconditionally and can cause service failures and data loss. Fix this by checking ->age_set in the IGNORE_DIRECTORY_PATH logic. (cherry picked from commit 9ed2a35e93f4a9e82585f860f54cdcbbdf3e1f86) --- src/tmpfiles/tmpfiles.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index ca99bb4a3..f585573a6 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -1410,7 +1410,7 @@ static int read_config_file(const char *fn, bool ignore_enoent) { candidate_item = j; } - if (candidate_item) { + if (candidate_item && candidate_item->age_set) { i->age = candidate_item->age; i->age_set = true; }