summaryrefslogtreecommitdiff
path: root/src/shared/util.c
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2012-09-03 15:40:37 +0200
committerLennart Poettering <lennart@poettering.net>2012-09-11 02:55:29 +0200
commitb3d284696cc244be51bbf82d5fa1bacc197c2f99 (patch)
tree84c8169ca3acc9540eae3f6c2070bd3ccbe82adf /src/shared/util.c
parent4a30847b9d71e0381948d68279c8f775b9de7850 (diff)
util: rm_rf_children_dangerous: delete all descendants dangerously
Call rm_rf_children_dangerous() recursively rather than falling back to rm_rf_children(). This fixes a bug in systemd-tmpfiles. The problem can easily be reproduced by: # mount /dev/sda1 /mnt # mkdir /mnt/test # echo "D /mnt" > /root/test.conf # systemd-tmpfiles --remove /root/test.conf Attempted to remove disk file system, and we can't allow that. rm_rf(/root/test): Operation not permitted Reported-by: Lukas Jirkovsky <l.jirkovsky@gmail.com>
Diffstat (limited to 'src/shared/util.c')
-rw-r--r--src/shared/util.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index 4f5cb26e3c..eaf2721381 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -3358,7 +3358,7 @@ int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct
continue;
}
- r = rm_rf_children(subdir_fd, only_dirs, honour_sticky, root_dev);
+ r = rm_rf_children_dangerous(subdir_fd, only_dirs, honour_sticky, root_dev);
if (r < 0 && ret == 0)
ret = r;