On 29/08/2025 02:45, yubiao hu wrote:
* src/df.c (get_dev): Fix potential null pointer dereference
- Avoid dereferencing stat_file when both device and
mount_point are NULL
- Handle allocation failure for cell when mount_point
is NULL
These are valid concerns.
I also see potential null dereferences of device.
The attached patch takes a different approach
by ensuring arguments are initialized earlier.
Marking this as done.
Will push the attached later.
cheers,
Padraig
From 13a154cd43b241a24dfbb3c6a9d66bfb0a28510e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <p...@draigbrady.com>
Date: Sat, 30 Aug 2025 18:48:38 +0100
Subject: [PATCH] df: ensure no null pointer dereferences
* src/df.c (get_dev): Initialise arguments to non null,
to ensure we never dereference null pointer.
Fixes https://bugs.gnu.org/79336
---
src/df.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/df.c b/src/df.c
index fe2e0e38f..8cfbeb419 100644
--- a/src/df.c
+++ b/src/df.c
@@ -1030,6 +1030,12 @@ get_dev (char const *device, char const *mount_point, char const *file,
if (!stat_file)
stat_file = mount_point ? mount_point : device;
+ if (! mount_point)
+ mount_point = "-"; /* unspecified */
+
+ if (! device)
+ device = "-"; /* unknown */
+
struct fs_usage fsu;
if (force_fsu)
fsu = *force_fsu;
@@ -1084,12 +1090,6 @@ get_dev (char const *device, char const *mount_point, char const *file,
alloc_table_row ();
- if (! device)
- device = "-"; /* unknown */
-
- if (! file)
- file = "-"; /* unspecified */
-
char *dev_name = xstrdup (device);
char *resolved_dev;
@@ -1107,6 +1107,9 @@ get_dev (char const *device, char const *mount_point, char const *file,
dev_name = resolved_dev;
}
+ if (! file)
+ file = "-"; /* unspecified */
+
if (! fstype)
fstype = "-"; /* unknown */
--
2.50.1