I don't think it is actually possible for this case to happen, but checking it does no harm.
Lasse Collin mentioned it to me while we were discussing some cgroup stuff a while ago. -- 8< -- * lib/nproc.c (get_cgroup2_cpu_quota): Check the return value of snprintf to make sure the path isn't truncated. --- ChangeLog | 6 ++++++ lib/nproc.c | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 65793e578c..d56394b482 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2026-08-15 Collin Funk <[email protected]> + + nproc: Verify the cgroup path isn't truncated. + * lib/nproc.c (get_cgroup2_cpu_quota): Check the return value of + snprintf to make sure the path isn't truncated. + 2026-08-14 Bruno Haible <[email protected]> Add unit tests and doc for the %Lf large precision issue on Solaris. diff --git a/lib/nproc.c b/lib/nproc.c index ef86975fb1..e3dfeaa16d 100644 --- a/lib/nproc.c +++ b/lib/nproc.c @@ -437,10 +437,11 @@ get_cgroup2_cpu_quota (void) is not enabled for that part of the hierarchy. */ char cpu_max_file[PATH_MAX]; - snprintf (cpu_max_file, sizeof (cpu_max_file), - "%s%s/cpu.max", mount, cgroup); + int n = snprintf (cpu_max_file, sizeof (cpu_max_file), + "%s%s/cpu.max", mount, cgroup); - if ((fp = fopen (cpu_max_file, "r")) + if (0 <= n && n < sizeof cpu_max_file + && (fp = fopen (cpu_max_file, "r")) && getline ("a_str, "a_size, fp) != -1 && strncmp (quota_str, "max", 3) != 0) { -- 2.55.0
