Commit 4b60a565 authored by Elena Salomatkina's avatar Elena Salomatkina Committed by Masahiro Yamada
Browse files

sumversion: Fix a memory leak in get_src_version()



strsep() modifies its first argument - buf.
An invalid pointer will be passed to the free() function.
Make the pointer passed to free() match the return value of
read_text_file().

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 9413e764 ("kbuild: split the second line of *.mod into *.usyms")
Signed-off-by: default avatarElena Salomatkina <esalomatkina@ispras.ru>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent 42f7652d
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -392,7 +392,7 @@ static int parse_source_files(const char *objfile, struct md4_ctx *md)
/* Calc and record src checksum. */
void get_src_version(const char *modname, char sum[], unsigned sumlen)
{
	char *buf;
	char *buf, *pos;
	struct md4_ctx md;
	char *fname;
	char filelist[PATH_MAX + 1];
@@ -401,9 +401,10 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen)
	snprintf(filelist, sizeof(filelist), "%s.mod", modname);

	buf = read_text_file(filelist);
	pos = buf;

	md4_init(&md);
	while ((fname = strsep(&buf, "\n"))) {
	while ((fname = strsep(&pos, "\n"))) {
		if (!*fname)
			continue;
		if (!(is_static_library(fname)) &&