diff options
author | Tom Gundersen <teg@jklm.no> | 2012-09-03 15:40:37 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-09-11 02:55:29 +0200 |
commit | b3d284696cc244be51bbf82d5fa1bacc197c2f99 (patch) | |
tree | 84c8169ca3acc9540eae3f6c2070bd3ccbe82adf /src/shared | |
parent | 4a30847b9d71e0381948d68279c8f775b9de7850 (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')
-rw-r--r-- | src/shared/util.c | 2 |
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; |