limits-util: use MUL_SAFE for physical memory calculation

Coverity flags (uint64_t)sc * (uint64_t)ps as a potential overflow.
Use MUL_SAFE which Coverity understands via __builtin_mul_overflow.
Physical page count times page size cannot realistically overflow
uint64_t, but this makes it provable to static analyzers.

CID#1548042

Follow-up for 09bb6448ae
This commit is contained in:
Luca Boccassi
2026-04-08 00:59:48 +01:00
parent fda487ef30
commit 40eef914f3

View File

@@ -28,9 +28,9 @@ uint64_t physical_memory(void) {
assert(sc > 0);
ps = page_size();
/* Silence static analyzers */
assert((uint64_t) sc <= UINT64_MAX / (uint64_t) ps);
mem = (uint64_t) sc * (uint64_t) ps;
/* Physical page count times page size cannot realistically overflow uint64_t,
* but use MUL_SAFE to make this obvious to static analyzers. */
assert_se(MUL_SAFE(&mem, (uint64_t) sc, (uint64_t) ps));
r = cg_get_root_path(&root);
if (r < 0) {