49 lines
1.5 KiB
Diff
49 lines
1.5 KiB
Diff
|
From bc0a0327ca6e47400e161f6d1e70e08cb350a36f Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>
|
||
|
Date: Mon, 3 May 2021 17:11:15 +0200
|
||
|
Subject: [PATCH] libselinux: label_file::init(): do not pass NULL to strdup
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
If any of the build flags `BUILD_HOST` or `ANDROID` is set and the
|
||
|
caller did not pass an option of type `SELABEL_OPT_PATH`, the variable
|
||
|
`path` might be not set.
|
||
|
Add a check to avoid calling `strdup()` with a NULL pointer.
|
||
|
|
||
|
Found by cppcheck.
|
||
|
|
||
|
src/label_file.c:759:26: warning: Possible null pointer dereference: path [nullPointer]
|
||
|
rec->spec_file = strdup(path);
|
||
|
^
|
||
|
src/label_file.c:713:21: note: Assignment 'path=NULL', assigned value is 0
|
||
|
const char *path = NULL;
|
||
|
^
|
||
|
src/label_file.c:759:26: note: Null pointer dereference
|
||
|
rec->spec_file = strdup(path);
|
||
|
^
|
||
|
|
||
|
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
|
||
|
---
|
||
|
libselinux/src/label_file.c | 4 ++++
|
||
|
1 file changed, 4 insertions(+)
|
||
|
|
||
|
diff --git a/libselinux/src/label_file.c b/libselinux/src/label_file.c
|
||
|
index b080fcf1305b..4268b52c84cc 100644
|
||
|
--- a/libselinux/src/label_file.c
|
||
|
+++ b/libselinux/src/label_file.c
|
||
|
@@ -756,6 +756,10 @@ static int init(struct selabel_handle *rec, const struct selinux_opt *opts,
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
+
|
||
|
+ if (!path)
|
||
|
+ goto finish;
|
||
|
+
|
||
|
rec->spec_file = strdup(path);
|
||
|
|
||
|
/*
|
||
|
--
|
||
|
2.32.0
|
||
|
|