From c4fdd29a45f0d60edad630ee0853f7788ba49bdd Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3350651-DimitriPapadopoulos@users.noreply.gitlab.com> Date: Tue, 12 May 2026 13:21:06 +0200 Subject: [PATCH] Suppress Coverity Scan false positive ** CID 646042: Insecure data handling (INTEGER_OVERFLOW) /src/isolate.c: 59 in compute_worker_data_limit() Signed-off-by: Dimitri Papadopoulos <3350651-DimitriPapadopoulos@users.noreply.gitlab.com> --- src/isolate.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/isolate.c b/src/isolate.c index 342bd48b..3944ff15 100644 --- a/src/isolate.c +++ b/src/isolate.c @@ -45,6 +45,7 @@ static rlim_t compute_worker_data_limit(unsigned headroom_kb) /* statm: size resident shared text lib data dt (all in pages) */ unsigned long size, resident, shared, text, lib, data; int n; + long pagesize; f = fopen("/proc/self/statm", "r"); if (!f) @@ -56,8 +57,14 @@ static rlim_t compute_worker_data_limit(unsigned headroom_kb) if (n != 6) return 0; - return (rlim_t)data * (rlim_t)sysconf(_SC_PAGESIZE) + - (rlim_t)headroom_kb * 1024; + pagesize = sysconf(_SC_PAGESIZE); + if (pagesize < 0) + return 0; + /* A process where data * pagesize overflows unsigned long (64-bit) + * would use more than 16 million TB of data pages! + * + * coverity[INTEGER_OVERFLOW] */ + return (rlim_t)data * (rlim_t)pagesize + (rlim_t)headroom_kb * 1024; } /* Apply per-worker heap cap (RLIMIT_DATA) unless explicitly disabled. */