* Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx> wrote: > On Sun, Feb 11, 2018 at 01:17:14PM +0100, Dominik Brodowski wrote: > > On Sun, Feb 11, 2018 at 12:21:53PM +0100, Ingo Molnar wrote: > > > > > > * Dominik Brodowski <linux@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > > > > + char name[128]; > > > > + if (sscanf(line, "%p-%p %c-%cp %*x %*x:%*x %*u %s", > > > > + &start, &end, &r, &x, name) != 5) > > > > > > So that's a buffer overflow waiting to happen, if a line in 'maps' gets too large, > > > right? > > > > ... as does tools/testing/selftests/x86/test_vsyscall.c already now, right? > > Will fix both up with an additional patch. > > Maybe no fix is needed after all: The fgets() call a few lines above > limits "line" to 127 chars max. So "name" can't even get close to 128 > chars, right? > > char line[128]; > ... > while (fgets(line, sizeof(line), maps)) { Yeah, probably - but still, this connection and the sscanf() guarantee is not obvious at first sight, so please improve this to derive from the same value (define a LINE_MAX size or such), plus maybe add a comment to the sscanf() line that this is safe because strlen(name) >= strlen(line). Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html