From 78b7318a049d4f8d519362cf9f396d2d3e1624b3 Mon Sep 17 00:00:00 2001 From: Junbo Zheng Date: Sat, 18 Feb 2023 14:41:17 +0800 Subject: [PATCH] =?UTF-8?q?fsutils/passwd:=20fix=20warning:=20leak=20of=20?= =?UTF-8?q?=E2=80=98iobuffer=E2=80=99=20[CWE-401]=20[-Wanalyzer-malloc-lea?= =?UTF-8?q?k]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In function ‘passwd_find’: passwd_find.c:82:14: warning: leak of ‘iobuffer’ [CWE-401] [-Wanalyzer-malloc-leak] 82 | return -errcode; | ^~~~~~~~ ‘passwd_find’: events 1-5 | | 65 | iobuffer = (FAR char *)malloc(CONFIG_FSUTILS_PASSWD_IOBUFFER_SIZE); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (1) allocated here | 66 | if (iobuffer == NULL) | | ~ | | | | | (2) assuming ‘iobuffer’ is non-NULL | | (3) following ‘false’ branch (when ‘iobuffer’ is non-NULL)... |...... | 73 | stream = fopen(CONFIG_FSUTILS_PASSWD_PATH, "r"); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) ...to here | 74 | if (stream == NULL) | | ~ | | | | | (5) following ‘true’ branch (when ‘stream’ is NULL)... | ‘passwd_find’: event 6 | | 80 | int errcode = errno; | | ^~~~~ | | | | | (6) ...to here | ‘passwd_find’: event 7 | | 82 | return -errcode; | | ^~~~~~~~ | | | | | (7) ‘iobuffer’ leaks here; was allocated at (1) | Signed-off-by: Junbo Zheng --- fsutils/passwd/passwd_find.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fsutils/passwd/passwd_find.c b/fsutils/passwd/passwd_find.c index 0ba671ed0..e377bbb30 100644 --- a/fsutils/passwd/passwd_find.c +++ b/fsutils/passwd/passwd_find.c @@ -73,6 +73,10 @@ int passwd_find(FAR const char *username, FAR struct passwd_s *passwd) stream = fopen(CONFIG_FSUTILS_PASSWD_PATH, "r"); if (stream == NULL) { + /* Free an I/O buffer for the transfer */ + + free(iobuffer); + int errcode = errno; DEBUGASSERT(errcode > 0); return -errcode;