52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
|
From f1bc162cc272e01631e8f6d890fae71e1cb96e03 Mon Sep 17 00:00:00 2001
|
|||
|
From: Nicolas Iooss <nicolas.iooss@m4x.org>
|
|||
|
Date: Fri, 30 Apr 2021 21:37:02 +0200
|
|||
|
Subject: [PATCH] libselinux: silence -Wstringop-overflow warning from gcc
|
|||
|
10.3.1
|
|||
|
MIME-Version: 1.0
|
|||
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|||
|
When building libselinux on Fedora 33 with gcc 10.3.1, the compiler
|
|||
|
reports:
|
|||
|
|
|||
|
label_file.c: In function ‘lookup_all.isra’:
|
|||
|
label_file.c:940:4: error: ‘strncpy’ specified bound depends on the
|
|||
|
length of the source argument [-Werror=stringop-overflow=]
|
|||
|
940 | strncpy(clean_key, key, len - 1);
|
|||
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
label_file.c:927:8: note: length computed here
|
|||
|
927 | len = strlen(key);
|
|||
|
| ^~~~~~~~~~~
|
|||
|
cc1: all warnings being treated as errors
|
|||
|
|
|||
|
As clean_key is the result of malloc(len), there is no issue here. But
|
|||
|
using strncpy can be considered as strange, because the size of the
|
|||
|
string is already known and the NUL terminator is always added later, in
|
|||
|
function ‘lookup_all.isra.
|
|||
|
|
|||
|
Replace strncpy with memcpy to silence this gcc false-positive warning.
|
|||
|
|
|||
|
Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
|
|||
|
Acked-by: Petr Lautrbach <plautrba@redhat.com>
|
|||
|
---
|
|||
|
libselinux/src/label_file.c | 2 +-
|
|||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|||
|
|
|||
|
diff --git a/libselinux/src/label_file.c b/libselinux/src/label_file.c
|
|||
|
index 726394ca4332..cfce23e0119e 100644
|
|||
|
--- a/libselinux/src/label_file.c
|
|||
|
+++ b/libselinux/src/label_file.c
|
|||
|
@@ -909,7 +909,7 @@ static const struct spec **lookup_all(struct selabel_handle *rec,
|
|||
|
if (!clean_key)
|
|||
|
goto finish;
|
|||
|
|
|||
|
- strncpy(clean_key, key, len - 1);
|
|||
|
+ memcpy(clean_key, key, len - 1);
|
|||
|
}
|
|||
|
|
|||
|
clean_key[len - 1] = '\0';
|
|||
|
--
|
|||
|
2.32.0
|
|||
|
|