Date: Thu, 15 Sep 2016 19:36:03 +0000 From: Daniil Berendeev <pipfstarrd@openmailbox.org> To: Benjamin Kaduk <kaduk@MIT.EDU> Cc: freebsd-hackers@FreeBSD.org Subject: Re: Multiple possible null-pointer dereferences Message-ID: <7022fa33-8789-0ac1-fbc9-7c2780149b49@openmailbox.org> In-Reply-To: <alpine.GSO.1.10.1609151515460.5272@multics.mit.edu> References: <614a3aa7-a903-23f5-33b8-c367f22cd454@openmailbox.org> <alpine.GSO.1.10.1609151515460.5272@multics.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
> But, all the pasted examples looked like they were or were likely to be in
> contrib code
Yes, the pasted examples are from contrib/ code, but similar code exists
in usr.sbin/, sys/, crypto/, lib/, libexec/, sbin/, just a few examples
from sys:
1) sys/boot/ficl/ficl.c:274
void ficlFreeVM(FICL_VM *pVM)
{
// Again, we at first dereference the pointer
FICL_SYSTEM *pSys = pVM->pSys;
FICL_VM *pList = pSys->vmList;
// And then check if it is valid
assert(pVM != 0);
// ...
2) sys/dev/iwn/if_iwn.c:6853
if (ss != NULL) { // we check if ss is valid
if (ss->ss_ssid[0].len != 0) {
// then some operations are performed over ss,
// but they are all done inside the if expression.
// Nothing is done in case ss == NULL.
// Then, a after a bunch of lines
// we do this (line 6933):
if (ss->ss_nssid > 0)
chan->flags |= htole32(IWN_CHAN_NPBREQS(1));
// Nothing is done with ss between the if() statement
// and the dereference
So, if these are actually bugs, I'd mark them as needed for fixing (as,
sometimes, it's not clear what should be done in the fail case and
should be better left up to the maintainer to decide) and send the
patches to the mailing list (among others).
--
Cheers~
PGP key fingerprint:
07B3 2177 3E27 BF41 DC65 CC95 BDA8 88F1 E9F9 CEEF
You can retrieve my public key at pgp.mit.edu.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7022fa33-8789-0ac1-fbc9-7c2780149b49>
