Compare commits

..

No commits in common. "0393e6a2742c5f4ec2903a700a7f41821cd141f2" and "427103f7a627af9a89b5eb470b13c8ff50ca43ae" have entirely different histories.

3 changed files with 15 additions and 22 deletions

View File

@ -566,7 +566,7 @@ static int server_send_nak(sd_dhcp_server *server, DHCPRequest *req) {
} }
static int server_send_forcerenew(sd_dhcp_server *server, be32_t address, static int server_send_forcerenew(sd_dhcp_server *server, be32_t address,
be32_t gateway, const uint8_t chaddr[]) { be32_t gateway, uint8_t chaddr[]) {
_cleanup_free_ DHCPPacket *packet = NULL; _cleanup_free_ DHCPPacket *packet = NULL;
size_t optoffset = 0; size_t optoffset = 0;
int r; int r;

View File

@ -218,7 +218,7 @@ static int clean_sysvipc_msg(uid_t delete_uid, gid_t delete_gid, bool rm) {
return ret; return ret;
} }
static int clean_posix_shm_internal(const char *dirname, DIR *dir, uid_t uid, gid_t gid, bool rm) { static int clean_posix_shm_internal(DIR *dir, uid_t uid, gid_t gid, bool rm) {
struct dirent *de; struct dirent *de;
int ret = 0, r; int ret = 0, r;
@ -234,8 +234,7 @@ static int clean_posix_shm_internal(const char *dirname, DIR *dir, uid_t uid, gi
if (errno == ENOENT) if (errno == ENOENT)
continue; continue;
ret = log_warning_errno(errno, "Failed to stat() POSIX shared memory segment %s/%s: %m", ret = log_warning_errno(errno, "Failed to stat() POSIX shared memory segment %s: %m", de->d_name);
dirname, de->d_name);
continue; continue;
} }
@ -245,10 +244,9 @@ static int clean_posix_shm_internal(const char *dirname, DIR *dir, uid_t uid, gi
kid = xopendirat(dirfd(dir), de->d_name, O_NOFOLLOW|O_NOATIME); kid = xopendirat(dirfd(dir), de->d_name, O_NOFOLLOW|O_NOATIME);
if (!kid) { if (!kid) {
if (errno != ENOENT) if (errno != ENOENT)
ret = log_warning_errno(errno, "Failed to enter shared memory directory %s/%s: %m", ret = log_warning_errno(errno, "Failed to enter shared memory directory %s: %m", de->d_name);
dirname, de->d_name);
} else { } else {
r = clean_posix_shm_internal(de->d_name, kid, uid, gid, rm); r = clean_posix_shm_internal(kid, uid, gid, rm);
if (r < 0) if (r < 0)
ret = r; ret = r;
} }
@ -264,8 +262,7 @@ static int clean_posix_shm_internal(const char *dirname, DIR *dir, uid_t uid, gi
if (errno == ENOENT) if (errno == ENOENT)
continue; continue;
ret = log_warning_errno(errno, "Failed to remove POSIX shared memory directory %s/%s: %m", ret = log_warning_errno(errno, "Failed to remove POSIX shared memory directory %s: %m", de->d_name);
dirname, de->d_name);
} else { } else {
log_debug("Removed POSIX shared memory directory %s", de->d_name); log_debug("Removed POSIX shared memory directory %s", de->d_name);
if (ret == 0) if (ret == 0)
@ -310,7 +307,7 @@ static int clean_posix_shm(uid_t uid, gid_t gid, bool rm) {
return log_warning_errno(errno, "Failed to open /dev/shm: %m"); return log_warning_errno(errno, "Failed to open /dev/shm: %m");
} }
return clean_posix_shm_internal("/dev/shm", dir, uid, gid, rm); return clean_posix_shm_internal(dir, uid, gid, rm);
} }
static int clean_posix_mq(uid_t uid, gid_t gid, bool rm) { static int clean_posix_mq(uid_t uid, gid_t gid, bool rm) {

View File

@ -1,12 +1,11 @@
/* SPDX-License-Identifier: LGPL-2.1+ */ /* SPDX-License-Identifier: LGPL-2.1+ */
#include "clean-ipc.h" #include "clean-ipc.h"
#include "errno-util.h"
#include "main-func.h"
#include "tests.h"
#include "user-util.h" #include "user-util.h"
#include "tests.h"
#include "util.h"
static int run(int argc, char *argv[]) { int main(int argc, char *argv[]) {
uid_t uid; uid_t uid;
int r; int r;
const char* name = argv[1] ?: NOBODY_USER_NAME; const char* name = argv[1] ?: NOBODY_USER_NAME;
@ -16,14 +15,11 @@ static int run(int argc, char *argv[]) {
r = get_user_creds(&name, &uid, NULL, NULL, NULL, 0); r = get_user_creds(&name, &uid, NULL, NULL, NULL, 0);
if (r == -ESRCH) if (r == -ESRCH)
return log_tests_skipped("Failed to resolve user"); return log_tests_skipped("Failed to resolve user");
if (r < 0) if (r < 0) {
return log_error_errno(r, "Failed to resolve \"%s\": %m", name); log_error_errno(r, "Failed to resolve \"%s\": %m", name);
return EXIT_FAILURE;
r = clean_ipc_by_uid(uid);
if (ERRNO_IS_PRIVILEGE(r))
return log_tests_skipped("No privileges");
return r;
} }
DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(run); r = clean_ipc_by_uid(uid);
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
}