From cd7091a7d88306004ca98c5dafcc40f44589b105 Mon Sep 17 00:00:00 2001
|
From: Jens Rehsack <sno@netbsd.org>
|
Date: Mon, 24 Feb 2020 10:52:21 +0100
|
Subject: [PATCH 1/3] src/dir.c: fix buffer-overflow warning
|
|
Fix compiler warning:
|
src/dir.c:1294:7: warning: 'strncpy' specified bound depends on the
|
length of the source argument [-Wstringop-overflow=]
|
|
The existing code assumes `path` will never exceed `MAXPATHLEN`. Also the
|
size of the buffer is increased by 1 to hold a path with the length of
|
`MAXPATHLEN` and trailing `0`.
|
|
Signed-off-by: Jens Rehsack <sno@netbsd.org>
|
---
|
Upstream-Status: Pending (https://savannah.gnu.org/bugs/?57888)
|
|
src/dir.c | 6 +++---
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
diff --git a/src/dir.c b/src/dir.c
|
index 862a18e..cad4c4a 100644
|
--- a/src/dir.c
|
+++ b/src/dir.c
|
@@ -1289,10 +1289,10 @@ local_stat (const char *path, struct stat *buf)
|
if (plen > 1 && path[plen - 1] == '.'
|
&& (path[plen - 2] == '/' || path[plen - 2] == '\\'))
|
{
|
- char parent[MAXPATHLEN];
|
+ char parent[MAXPATHLEN+1];
|
|
- strncpy (parent, path, plen - 2);
|
- parent[plen - 2] = '\0';
|
+ strncpy (parent, path, MAXPATHLEN);
|
+ parent[MIN(plen - 2, MAXPATHLEN)] = '\0';
|
if (stat (parent, buf) < 0 || !_S_ISDIR (buf->st_mode))
|
return -1;
|
}
|
--
|
2.17.1
|