Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7d65cf10 authored by Al Viro's avatar Al Viro
Browse files

unfuck binfmt_misc.c (broken by commit e6084d4a)



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: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 50062175
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -254,6 +254,7 @@ static char *scanarg(char *s, char del)
				return NULL;
		}
	}
	s[-1] ='\0';
	return s;
}

@@ -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(
@@ -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)