summaryrefslogtreecommitdiffstats
path: root/scripts/mod/modpost.c
diff options
context:
space:
mode:
authorMasahiro Yamada <masahiroy@kernel.org>2020-06-01 14:57:18 +0900
committerMasahiro Yamada <masahiroy@kernel.org>2020-06-06 23:38:13 +0900
commitf531c1b5de65bc687bdcca69e7649fe2db5b6d87 (patch)
treeae7ada97d1cd77e9826c4d35cfa334096f9fb0b7 /scripts/mod/modpost.c
parentac5100f54329676469688d1b5415cd8d6428c909 (diff)
downloadlinux-f531c1b5de65bc687bdcca69e7649fe2db5b6d87.tar.gz
linux-f531c1b5de65bc687bdcca69e7649fe2db5b6d87.tar.bz2
linux-f531c1b5de65bc687bdcca69e7649fe2db5b6d87.zip
modpost: fix potential mmap'ed file overrun in get_src_version()
I do not know how reliably this function works, but it looks dangerous to me. strchr(sources, '\n'); ... continues searching until it finds '\n' or it reaches the '\0' terminator. In other words, 'sources' should be a null-terminated string. However, grab_file() just mmaps a file, so 'sources' is not terminated with null byte. If the file does not contain '\n' at all, strchr() will go beyond the mmap'ed memory. Use read_text_file(), which loads the file content into a malloc'ed buffer, appending null byte. Here we are interested only in the first line of *.mod files. Use get_line() helper to get the first line. This also makes missing *.mod file a fatal error. Commit 4be40e22233c ("kbuild: do not emit src version warning for non-modules") ignored missing *.mod files. I do not fully understand what that commit addressed, but commit 91341d4b2c19 ("kbuild: introduce new option to enhance section mismatch analysis") introduced partial section checks by using modpost. built-in.o was parsed by modpost. Even modules had a problem because *.mod files were created after the modpost check. Commit b7dca6dd1e59 ("kbuild: create *.mod with full directory path and remove MODVERDIR") stopped doing that. Now that modpost is only invoked after the directory descend, *.mod files should always exist at the modpost stage. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'scripts/mod/modpost.c')
0 files changed, 0 insertions, 0 deletions