From: Luca Boccassi Date: Wed, 26 Apr 2023 13:19:33 +0000 (+0100) Subject: coredump filter: add mask for 'all' using UINT32_MAX, not UINT64_MAX X-Git-Tag: v254-rc1~619^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f3bb8f20dcccaceea8b1ee05f0560b81162037b;p=thirdparty%2Fsystemd.git coredump filter: add mask for 'all' using UINT32_MAX, not UINT64_MAX The kernel returns ERANGE when UINT64_MAX is passed. Create a mask and use UINT32_max, which is accepted, so that future bits will also be set. --- diff --git a/src/shared/coredump-util.c b/src/shared/coredump-util.c index dc137317a90..805503f366a 100644 --- a/src/shared/coredump-util.c +++ b/src/shared/coredump-util.c @@ -46,7 +46,7 @@ int coredump_filter_mask_from_string(const char *s, uint64_t *ret) { } if (streq(n, "all")) { - m = UINT64_MAX; + m = COREDUMP_FILTER_MASK_ALL; continue; } diff --git a/src/shared/coredump-util.h b/src/shared/coredump-util.h index 99dbfde730e..4f54bb94c00 100644 --- a/src/shared/coredump-util.h +++ b/src/shared/coredump-util.h @@ -22,6 +22,9 @@ typedef enum CoredumpFilter { 1u << COREDUMP_FILTER_ELF_HEADERS | \ 1u << COREDUMP_FILTER_PRIVATE_HUGE) +/* The kernel doesn't like UINT64_MAX and returns ERANGE, use UINT32_MAX to support future new flags */ +#define COREDUMP_FILTER_MASK_ALL UINT32_MAX + const char* coredump_filter_to_string(CoredumpFilter i) _const_; CoredumpFilter coredump_filter_from_string(const char *s) _pure_; int coredump_filter_mask_from_string(const char *s, uint64_t *ret); diff --git a/src/test/test-coredump-util.c b/src/test/test-coredump-util.c index 7a41e0fc294..178e89389b1 100644 --- a/src/test/test-coredump-util.c +++ b/src/test/test-coredump-util.c @@ -28,6 +28,8 @@ TEST(coredump_filter_mask_from_string) { uint64_t f; assert_se(coredump_filter_mask_from_string("default", &f) == 0); assert_se(f == COREDUMP_FILTER_MASK_DEFAULT); + assert_se(coredump_filter_mask_from_string("all", &f) == 0); + assert_se(f == COREDUMP_FILTER_MASK_ALL); assert_se(coredump_filter_mask_from_string(" default\tdefault\tdefault ", &f) == 0); assert_se(f == COREDUMP_FILTER_MASK_DEFAULT);