]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/mmapped: use static_assert on undefined padding docs-develop-rrl-8r8r8r/deployments/5486
authorLukáš Ondráček <lukas.ondracek@nic.cz>
Thu, 31 Oct 2024 16:39:31 +0000 (17:39 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 4 Nov 2024 13:39:48 +0000 (14:39 +0100)
daemon/defer.c
daemon/ratelimiting.c

index ef24727df212056b8f9b5ee37b387904b668272a..59af3e68932d08454e4f1ce7984c48a48c44d4a3 100644 (file)
@@ -458,11 +458,12 @@ int defer_init(const char *mmap_file, int cpus)
 
        size_t size = offsetof(struct defer, kru) + KRU.get_size(capacity_log);
        size_t header_size = offsetof(struct defer, using_avx2) + sizeof(header.using_avx2);
-       kr_assert(header_size ==
-               sizeof(header.capacity) +
-               sizeof(header.max_decay) +
-               sizeof(header.cpus) +
-               sizeof(header.using_avx2));  // no undefined padding inside
+       static_assert(  // no padding up to .using_avx2
+               offsetof(struct defer, using_avx2) ==
+                       sizeof(header.capacity) +
+                       sizeof(header.max_decay) +
+                       sizeof(header.cpus),
+               "detected padding with undefined data inside mmapped header");
 
        ret = mmapped_init(&defer_mmapped, mmap_file, size, &header, header_size);
        if (ret == MMAPPED_WAS_FIRST) {
index 179ce0431bfece62462550456e80e470e0eb2c76..528608cf9c7910bbefe938db58ffabe0dbc8acff 100644 (file)
@@ -63,14 +63,15 @@ int ratelimiting_init(const char *mmap_file, size_t capacity, uint32_t instant_l
        };
 
        size_t header_size = offsetof(struct ratelimiting, using_avx2) + sizeof(header.using_avx2);
-       kr_assert(header_size ==
-               sizeof(header.capacity) +
-               sizeof(header.instant_limit) +
-               sizeof(header.rate_limit) +
-               sizeof(header.log_period) +
-               sizeof(header.slip) +
-               sizeof(header.dry_run) +
-               sizeof(header.using_avx2));  // no undefined padding inside
+       static_assert(  // no padding up to .using_avx2
+               offsetof(struct ratelimiting, using_avx2) ==
+                       sizeof(header.capacity) +
+                       sizeof(header.instant_limit) +
+                       sizeof(header.rate_limit) +
+                       sizeof(header.log_period) +
+                       sizeof(header.slip) +
+                       sizeof(header.dry_run),
+               "detected padding with undefined data inside mmapped header");
 
        int ret = mmapped_init(&ratelimiting_mmapped, mmap_file, size, &header, header_size);
        if (ret == MMAPPED_WAS_FIRST) {