lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sun, 11 Feb 2018 19:24:28 +0100
From:   Ingo Molnar <mingo@...nel.org>
To:     Dominik Brodowski <linux@...inikbrodowski.net>
Cc:     linux-kernel@...r.kernel.org, linux-kselftest@...r.kernel.org,
        x86@...nel.org, shuah@...nel.org,
        Andrew Lutomirski <luto@...nel.org>
Subject: Re: [PATCH 2/5] selftests/x86: fix vDSO selftest segfault for
 vsyscall=none


* Dominik Brodowski <linux@...inikbrodowski.net> 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@...inikbrodowski.net> 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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ