diff options
author | aslepykh <145323274+aslepykh@users.noreply.github.com> | 2023-12-08 02:54:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-08 02:54:52 +0100 |
commit | a6f1551fe785e241e7c5534aa0c580b31a83a28b (patch) | |
tree | 09c2d6ece0143ddd0676d6f065ccb9bb20b27f19 /src/oom | |
parent | various: don't log synthetic EIO for fwrite (diff) | |
download | systemd-a6f1551fe785e241e7c5534aa0c580b31a83a28b.tar.xz systemd-a6f1551fe785e241e7c5534aa0c580b31a83a28b.zip |
test: avoid NO_CAST.INTEGER_OVERFLOW in test-oomd-util (#30365)
The `.mem_total` variable has `uint64_t` type, therefore, when multiplying the number
`20971512` by the number `1024` with the suffix `U`, we will not get the expected result of
`21,474,828,288`, since the number `20971512` without an explicit type indication has
`uint32_t` type.
First, multiplication will occur in accordance with the `uint32_t` type; this operation will
cause a **type overflow**, and only then will this result be assigned to a `uint64_t` type
variable.
It's worth adding the `UL` suffix to the number `20971512` to avoid **overflow**.
Found by Linux Verification Center (portal.linuxtesting.ru) with SVACE.
Author A. Slepykh.
Diffstat (limited to 'src/oom')
-rw-r--r-- | src/oom/test-oomd-util.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/oom/test-oomd-util.c b/src/oom/test-oomd-util.c index d76d91e26d..1aef6039e1 100644 --- a/src/oom/test-oomd-util.c +++ b/src/oom/test-oomd-util.c @@ -291,19 +291,19 @@ static void test_oomd_pressure_above(void) { static void test_oomd_mem_and_swap_free_below(void) { OomdSystemContext ctx = (OomdSystemContext) { - .mem_total = 20971512 * 1024U, - .mem_used = 3310136 * 1024U, - .swap_total = 20971512 * 1024U, - .swap_used = 20971440 * 1024U, + .mem_total = UINT64_C(20971512) * 1024U, + .mem_used = UINT64_C(3310136) * 1024U, + .swap_total = UINT64_C(20971512) * 1024U, + .swap_used = UINT64_C(20971440) * 1024U, }; assert_se(oomd_mem_available_below(&ctx, 2000) == false); assert_se(oomd_swap_free_below(&ctx, 2000) == true); ctx = (OomdSystemContext) { - .mem_total = 20971512 * 1024U, - .mem_used = 20971440 * 1024U, - .swap_total = 20971512 * 1024U, - .swap_used = 3310136 * 1024U, + .mem_total = UINT64_C(20971512) * 1024U, + .mem_used = UINT64_C(20971440) * 1024U, + .swap_total = UINT64_C(20971512) * 1024U, + .swap_used = UINT64_C(3310136) * 1024U, }; assert_se(oomd_mem_available_below(&ctx, 2000) == true); assert_se(oomd_swap_free_below(&ctx, 2000) == false); |