basic/rm-rf: include the path in error messages

Attempted to remove disk file system under "/tmp/systemd-temporary-aWPkbQ", and we can't allow that.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2018-05-22 11:33:01 +02:00
parent 930362ab26
commit 265e9be772

View file

@ -13,6 +13,7 @@
#include <sys/statfs.h>
#include <unistd.h>
#include "alloc-util.h"
#include "btrfs-util.h"
#include "cgroup-util.h"
#include "dirent-util.h"
@ -49,13 +50,15 @@ int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
}
if (is_physical_fs(&sfs)) {
/* We refuse to clean physical file systems
* with this call, unless explicitly
* requested. This is extra paranoia just to
* be sure we never ever remove non-state
* data */
/* We refuse to clean physical file systems with this call,
* unless explicitly requested. This is extra paranoia just
* to be sure we never ever remove non-state data. */
_cleanup_free_ char *path = NULL;
(void) fd_get_path(fd, &path);
log_error("Attempted to remove disk file system under \"%s\", and we can't allow that.",
strna(path));
log_error("Attempted to remove disk file system, and we can't allow that.");
safe_close(fd);
return -EPERM;
}
@ -171,7 +174,7 @@ int rm_rf(const char *path, RemoveFlags flags) {
* call. This is extra paranoia to never cause a really
* seriously broken system. */
if (path_equal_or_files_same(path, "/", AT_SYMLINK_NOFOLLOW)) {
log_error("Attempted to remove entire root file system, and we can't allow that.");
log_error("Attempted to remove entire root file system (\"%s\"), and we can't allow that.", path);
return -EPERM;
}
@ -189,7 +192,6 @@ int rm_rf(const char *path, RemoveFlags flags) {
fd = open(path, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW|O_NOATIME);
if (fd < 0) {
if (!IN_SET(errno, ENOTDIR, ELOOP))
return -errno;
@ -198,7 +200,7 @@ int rm_rf(const char *path, RemoveFlags flags) {
return -errno;
if (is_physical_fs(&s)) {
log_error("Attempted to remove disk file system, and we can't allow that.");
log_error("Attempted to remove files from a disk file system under \"%s\", refusing.", path);
return -EPERM;
}
}