Skip to content

Commit

Permalink
unfuck binfmt_misc.c (broken by commit e6084d4)
Browse files Browse the repository at this point in the history
scanarg(s, del) never returns s; the empty field results in s + 1.
Restore the correct checks, and move NUL-termination into scanarg(),
while we are at it.

Incidentally, mixing "coding style cleanups" (for small values of cleanup)
with functional changes is a Bad Idea(tm)...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Dec 17, 2014
1 parent 5006217 commit 7d65cf1
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions fs/binfmt_misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ static char *scanarg(char *s, char del)
return NULL;
}
}
s[-1] ='\0';
return s;
}

Expand Down Expand Up @@ -378,8 +379,7 @@ static Node *create_entry(const char __user *buffer, size_t count)
p = scanarg(p, del);
if (!p)
goto einval;
p[-1] = '\0';
if (p == e->magic)
if (!e->magic[0])
goto einval;
if (USE_DEBUG)
print_hex_dump_bytes(
Expand All @@ -391,8 +391,7 @@ static Node *create_entry(const char __user *buffer, size_t count)
p = scanarg(p, del);
if (!p)
goto einval;
p[-1] = '\0';
if (p == e->mask) {
if (!e->mask[0]) {
e->mask = NULL;
pr_debug("register: mask[raw]: none\n");
} else if (USE_DEBUG)
Expand Down

0 comments on commit 7d65cf1

Please sign in to comment.