X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fclean-ipc.c;h=48b10865da1b49fbd2ab3ab5019e30116f26be02;hb=b733fbe7a0214eb43e402db7179697bf9c0975c1;hp=ddd42cc2b2b742250fbda1cd92e3615e5721303b;hpb=66cdd0f2d0670b054bd27dad16fcb5838b11dde3;p=elogind.git diff --git a/src/shared/clean-ipc.c b/src/shared/clean-ipc.c index ddd42cc2b..48b10865d 100644 --- a/src/shared/clean-ipc.c +++ b/src/shared/clean-ipc.c @@ -24,12 +24,12 @@ #include #include #include -#include #include #include #include #include "util.h" +#include "formats-util.h" #include "strv.h" #include "clean-ipc.h" @@ -44,7 +44,7 @@ static int clean_sysvipc_shm(uid_t delete_uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /proc/sysvipc/shm: %m"); + log_warning_errno(errno, "Failed to open /proc/sysvipc/shm: %m"); return -errno; } @@ -78,7 +78,7 @@ static int clean_sysvipc_shm(uid_t delete_uid) { if (errno == EIDRM || errno == EINVAL) continue; - log_warning("Failed to remove SysV shared memory segment %i: %m", shmid); + log_warning_errno(errno, "Failed to remove SysV shared memory segment %i: %m", shmid); ret = -errno; } } @@ -86,7 +86,7 @@ static int clean_sysvipc_shm(uid_t delete_uid) { return ret; fail: - log_warning("Failed to read /proc/sysvipc/shm: %m"); + log_warning_errno(errno, "Failed to read /proc/sysvipc/shm: %m"); return -errno; } @@ -101,7 +101,7 @@ static int clean_sysvipc_sem(uid_t delete_uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /proc/sysvipc/sem: %m"); + log_warning_errno(errno, "Failed to open /proc/sysvipc/sem: %m"); return -errno; } @@ -130,7 +130,7 @@ static int clean_sysvipc_sem(uid_t delete_uid) { if (errno == EIDRM || errno == EINVAL) continue; - log_warning("Failed to remove SysV semaphores object %i: %m", semid); + log_warning_errno(errno, "Failed to remove SysV semaphores object %i: %m", semid); ret = -errno; } } @@ -138,7 +138,7 @@ static int clean_sysvipc_sem(uid_t delete_uid) { return ret; fail: - log_warning("Failed to read /proc/sysvipc/sem: %m"); + log_warning_errno(errno, "Failed to read /proc/sysvipc/sem: %m"); return -errno; } @@ -153,7 +153,7 @@ static int clean_sysvipc_msg(uid_t delete_uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /proc/sysvipc/msg: %m"); + log_warning_errno(errno, "Failed to open /proc/sysvipc/msg: %m"); return -errno; } @@ -183,7 +183,7 @@ static int clean_sysvipc_msg(uid_t delete_uid) { if (errno == EIDRM || errno == EINVAL) continue; - log_warning("Failed to remove SysV message queue %i: %m", msgid); + log_warning_errno(errno, "Failed to remove SysV message queue %i: %m", msgid); ret = -errno; } } @@ -191,7 +191,7 @@ static int clean_sysvipc_msg(uid_t delete_uid) { return ret; fail: - log_warning("Failed to read /proc/sysvipc/msg: %m"); + log_warning_errno(errno, "Failed to read /proc/sysvipc/msg: %m"); return -errno; } @@ -211,7 +211,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to stat() POSIX shared memory segment %s: %m", de->d_name); + log_warning_errno(errno, "Failed to stat() POSIX shared memory segment %s: %m", de->d_name); ret = -errno; continue; } @@ -225,7 +225,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { kid = xopendirat(dirfd(dir), de->d_name, O_NOFOLLOW|O_NOATIME); if (!kid) { if (errno != ENOENT) { - log_warning("Failed to enter shared memory directory %s: %m", de->d_name); + log_warning_errno(errno, "Failed to enter shared memory directory %s: %m", de->d_name); ret = -errno; } } else { @@ -239,7 +239,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to remove POSIX shared memory directory %s: %m", de->d_name); + log_warning_errno(errno, "Failed to remove POSIX shared memory directory %s: %m", de->d_name); ret = -errno; } } else { @@ -249,7 +249,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to remove POSIX shared memory segment %s: %m", de->d_name); + log_warning_errno(errno, "Failed to remove POSIX shared memory segment %s: %m", de->d_name); ret = -errno; } } @@ -258,7 +258,7 @@ static int clean_posix_shm_internal(DIR *dir, uid_t uid) { return ret; fail: - log_warning("Failed to read /dev/shm: %m"); + log_warning_errno(errno, "Failed to read /dev/shm: %m"); return -errno; } @@ -270,7 +270,7 @@ static int clean_posix_shm(uid_t uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /dev/shm: %m"); + log_warning_errno(errno, "Failed to open /dev/shm: %m"); return -errno; } @@ -287,7 +287,7 @@ static int clean_posix_mq(uid_t uid) { if (errno == ENOENT) return 0; - log_warning("Failed to open /dev/mqueue: %m"); + log_warning_errno(errno, "Failed to open /dev/mqueue: %m"); return -errno; } @@ -302,7 +302,7 @@ static int clean_posix_mq(uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to stat() MQ segment %s: %m", de->d_name); + log_warning_errno(errno, "Failed to stat() MQ segment %s: %m", de->d_name); ret = -errno; continue; } @@ -317,7 +317,7 @@ static int clean_posix_mq(uid_t uid) { if (errno == ENOENT) continue; - log_warning("Failed to unlink POSIX message queue %s: %m", fn); + log_warning_errno(errno, "Failed to unlink POSIX message queue %s: %m", fn); ret = -errno; } } @@ -325,15 +325,15 @@ static int clean_posix_mq(uid_t uid) { return ret; fail: - log_warning("Failed to read /dev/mqueue: %m"); + log_warning_errno(errno, "Failed to read /dev/mqueue: %m"); return -errno; } int clean_ipc(uid_t uid) { int ret = 0, r; - /* Refuse to clean IPC of the root user */ - if (uid == 0) + /* Refuse to clean IPC of the root and system users */ + if (uid <= SYSTEM_UID_MAX) return 0; r = clean_sysvipc_shm(uid);