Subject: bug#79336: [PATCH] df: fix potential null pointer dereference

From: Paul Eggert <[email-masked]>
Date: Mon, 1 Sep 2025 10:07:21 -0700

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-masked]>
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