X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fclean-ipc.c;h=ea781f5dea716b2ddcb296c1d33aa3be2a328f36;hb=322e94abd97bbd3b8b0d37719449c0be5b9d99d8;hp=ddd42cc2b2b742250fbda1cd92e3615e5721303b;hpb=66cdd0f2d0670b054bd27dad16fcb5838b11dde3;p=elogind.git diff --git a/src/shared/clean-ipc.c b/src/shared/clean-ipc.c index ddd42cc2b..ea781f5de 100644 --- a/src/shared/clean-ipc.c +++ b/src/shared/clean-ipc.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -44,7 +43,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 +77,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 +85,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 +100,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 +129,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 +137,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 +152,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 +182,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 +190,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 +210,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 +224,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 +238,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 +248,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 +257,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 +269,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 +286,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 +301,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 +316,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 +324,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);