author: Oleg Nesterov <oleg@redhat.com> 2019-01-03 15:28:07 -0800
committer: Linus Torvalds <torvalds@linux-foundation.org> 2019-01-04 13:13:47 -0800
commit: 8099b047ecc431518b9bb6bdbba3549bbecdc343
parent: fb5bf31722d0805a3f394f7d59f2e8cd07acccb7
Commit Summary:
Diffstat:
1 file changed, 7 insertions, 3 deletions
diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c
index 7cde3f46ad26..d0078cbb718b 100644
--- a/fs/binfmt_script.c
+++ b/fs/binfmt_script.c
@@ -42,10 +42,14 @@ static int load_script(struct linux_binprm *bprm)
fput(bprm->file);
bprm->file = NULL;
- bprm->buf[BINPRM_BUF_SIZE - 1] = '\0';
- if ((cp = strchr(bprm->buf, '\n')) == NULL)
- cp = bprm->buf+BINPRM_BUF_SIZE-1;
+ for (cp = bprm->buf+2;; cp++) {
+ if (cp >= bprm->buf + BINPRM_BUF_SIZE)
+ return -ENOEXEC;
+ if (!*cp || (*cp == '\n'))
+ break;
+ }
*cp = '\0';
+
while (cp > bprm->buf) {
cp--;
if ((*cp == ' ') || (*cp == '\t'))