From: Kamalesh Babulal Date: Wed, 20 Jul 2022 17:22:01 +0000 (-0600) Subject: api: null terminate readlink buffer in cg_get_procname_from_proc_cmdline() X-Git-Tag: v3.0~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23bdfd2326a01675a0eac9ab7b601b4a505d219c;p=thirdparty%2Flibcgroup.git api: null terminate readlink buffer in cg_get_procname_from_proc_cmdline() Fix readlink buffer null termination warning, reported by Coverity tool: CID 258276 (#1 of 1): String not null terminated (STRING_NULL). string_null: Passing unterminated string buf_cwd to strcat, which expects a null-terminated string. As per the man pages (man 2 readlink): "readlink() does not append a null byte to buf. It will (silently) truncate the contents (to a length of bufsiz characters), in case the buffer is too small to hold all of the contents." Explicitly null terminate the buffer passed to readlink() in cg_get_procname_from_proc_cmdline(). Signed-off-by: Kamalesh Babulal Signed-off-by: Tom Hromatka --- diff --git a/src/api.c b/src/api.c index c38c2b5f..caa9b3b6 100644 --- a/src/api.c +++ b/src/api.c @@ -5288,6 +5288,9 @@ static int cg_get_procname_from_proc_cmdline(pid_t pid, const char *pname_status if (readlink(path, buf_cwd, sizeof(buf_cwd)) < 0) return ECGROUPNOTEXIST; + /* readlink doesn't append a null */ + buf_cwd[FILENAME_MAX - 1] = '\0'; + sprintf(path, "/proc/%d/cmdline", pid); f = fopen(path, "re"); if (!f)