On 2025-09-01 05:50, yubiao hu wrote:
I have tested the patch, and it can pacify my static analyzer.
Thanks for checking. I installed the attached patch, which is the same
except with a comment fixed.
It's typically better not to patch merely to pacify a false positive
from static analysis, if the patch introduces makework code that
complicates the work of humans (and of other static analyzers) and that
slows down execution. But here the patch streamlines the code (and
caused me to review and fix commentary errors) so it's a clear win.
Thanks for reporting the issue.
Closing the bug report.
From c6397d08725e651fe81fbbd91df2043674206865 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Mon, 1 Sep 2025 09:55:29 -0700
Subject: [PATCH] df: pacify static analysis
Problem reported by Yubiao Hu <https://bugs.gnu.org/79336>.
* src/df.c (get_dev): Assume MOUNT_POINT is non-null.
---
src/df.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/src/df.c b/src/df.c
index fe2e0e38f..db5287157 100644
--- a/src/df.c
+++ b/src/df.c
@@ -988,15 +988,15 @@ add_to_grand_total (struct field_values_t *bv, struct field_values_t *iv)
}
/* Obtain a space listing for the device with absolute file name DEVICE.
- If MOUNT_POINT is non-null, it is the name of the root of the
- file system on DEVICE.
+ MOUNT_POINT names the root of the file system on DEVICE.
+ FILE is the name to list; if null, it defaults to "-".
If STAT_FILE is non-null, it is the name of a file within the file
system that the user originally asked for; this provides better
diagnostics, and sometimes it provides better results on networked
file systems that give different free-space results depending on
where in the file system you probe.
If FSTYPE is non-null, it is the type of the file system on DEVICE.
- If MOUNT_POINT is non-null, then DEVICE may be null -- certain systems may
+ DEVICE may be null -- certain systems may
not be able to produce statistics in this case.
ME_DUMMY and ME_REMOTE are the mount entry flags.
Caller must set PROCESS_ALL to true when iterating over all entries, as
@@ -1020,15 +1020,11 @@ get_dev (char const *device, char const *mount_point, char const *file,
/* Ignore relative MOUNT_POINTs, which are present for example
in /proc/mounts on Linux with network namespaces. */
- if (!force_fsu && mount_point && ! IS_ABSOLUTE_FILE_NAME (mount_point))
+ if (!force_fsu && ! IS_ABSOLUTE_FILE_NAME (mount_point))
return;
- /* If MOUNT_POINT is null, then the file system is not mounted, and this
- program reports on the file system that the special file is on.
- It would be better to report on the unmounted file system,
- but statfs doesn't do that on most systems. */
if (!stat_file)
- stat_file = mount_point ? mount_point : device;
+ stat_file = mount_point;
struct fs_usage fsu;
if (force_fsu)
--
2.48.1