From owner-svn-src-head@freebsd.org Thu Aug 16 23:33:16 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 36364107A15A; Thu, 16 Aug 2018 23:33:16 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Received: from spindle.one-eyed-alien.net (spindle.one-eyed-alien.net [199.48.129.229]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C58207E34B; Thu, 16 Aug 2018 23:33:15 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Received: by spindle.one-eyed-alien.net (Postfix, from userid 3001) id 0D0B35A9F12; Thu, 16 Aug 2018 23:33:15 +0000 (UTC) Date: Thu, 16 Aug 2018 23:33:15 +0000 From: Brooks Davis To: Warner Losh Cc: Brooks Davis , Marcelo Araujo , "Rodney W. Grimes" , John-Mark Gurney , src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r337887 - head/usr.sbin/bhyve Message-ID: <20180816233314.GA11357@spindle.one-eyed-alien.net> References: <201808161929.w7GJTWfS055411@pdx.rh.CN85.dnsmgr.net> <20180816231630.GA10866@spindle.one-eyed-alien.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="9jxsPFA5p3P2qPhR" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Aug 2018 23:33:16 -0000 --9jxsPFA5p3P2qPhR Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Aug 16, 2018 at 05:23:26PM -0600, Warner Losh wrote: > On Thu, Aug 16, 2018 at 5:16 PM, Brooks Davis wrote: >=20 > > On Fri, Aug 17, 2018 at 07:04:05AM +0800, Marcelo Araujo wrote: > > > 2018-08-17 3:29 GMT+08:00 Rodney W. Grimes > net>: > > > > > > > > On Thu, Aug 16, 2018 at 11:06 AM, John-Mark Gurney > > > > > > wrote: > > > > > > > > > > > Marcelo Araujo wrote this message on Thu, Aug 16, 2018 at 06:31 > > +0000: > > > > > > > Author: araujo > > > > > > > Date: Thu Aug 16 06:31:54 2018 > > > > > > > New Revision: 337887 > > > > > > > URL: https://svnweb.freebsd.org/changeset/base/337887 > > > > > > > > > > > > > > Log: > > > > > > > Add a comment explaining how the PSN works and why there is= no > > > > need for > > > > > > > a null terminator. Also mark CID 1394825 as intentional. > > > > > > > > > > > > > > Reported by: Coverity > > > > > > > CID: 1394825 > > > > > > > MFC after: 1 week > > > > > > > Sponsored by: iXsystems Inc. > > > > > > > > > > > > > > Modified: > > > > > > > head/usr.sbin/bhyve/pci_nvme.c > > > > > > > > > > > > > > Modified: head/usr.sbin/bhyve/pci_nvme.c > > > > > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > > > > > --- head/usr.sbin/bhyve/pci_nvme.c Thu Aug 16 06:20:25 2018 > > > > > > (r337886) > > > > > > > +++ head/usr.sbin/bhyve/pci_nvme.c Thu Aug 16 06:31:54 2018 > > > > > > (r337887) > > > > > > > @@ -1714,6 +1714,11 @@ pci_nvme_parse_opts(struct pci_nvme_so= ftc > > *sc, > > > > > > char *o > > > > > > > > > > > > [...] > > > > > > > > > > > > > memset(sc->ctrldata.sn, 0, sizeof(sc-> > > > > ctrldata.sn > > > > > > )); > > > > > > > strncpy(sc->ctrldata.sn, config, > > > > > > > sizeof(sc->ctrldata.sn)); > > > > > > > > > > > > This memset is unneeded, as strncpy will write NUL bytes to fill > > out > > > > > > the buffer: > > > > > > If src is less than len characters long, the remainder of > > > > > > dst is filled with `\0' characters. > > > > > > > > > > > > > > > > It also looks like the comment was wrong. The newest NVMe standar= ds > > say > > > > > these fields should be 7-bit and space-padded. > > > > > > > > lol, which is what the vendor that caused me grief with > > > > ata serial numbers did decades ago. > > > > > > > > -- > > > > Rod Grimes > > > > rgrimes@freebsd.org > > > > > > > > > > I have discussed a bit with imp@, but I will drop the patch here to g= et > > > other peoples opinion too. > > > So, name space and firmware number also need to be padded with spaces. > > > > > > I couldn't think in any other better way to do that. > > > > > > Does this patch looks reasonable? > > > https://people.freebsd.org/~araujo/pci_nvme.diff > > > > You should check that len<=3Ddst_size and at least truncate rather than > > overflowing. If the strings from userspace you need to return or log an > > error, if they come from the kernel, you can panic. >=20 > Help me understand, I thought that the strnlen bounded what was copied. Apparently the standard calls for ' ' rather than '\0' padding. The prop memcpy+memset does the job, but contains potential overflows. -- Brooks --9jxsPFA5p3P2qPhR Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEcBAEBAgAGBQJbdgm6AAoJEKzQXbSebgfA8lQH/2AcD3Embk6TBtQI1fZ+IJA8 hF71ikzD2eibAYrsZEYhtyws1lzxYwvml/X1oQRJyN/jj0b44UgonBNheQl197NS /GkwRvHunnQGkPhsWVOqlEby2fNi7F6YJ/WTe8Rz1fc8YdxLcvGRiosO0wVL3vO2 haNpeiC7GTy6RCfNccugU1NW8WbUd1tLIlvDCmrroPUrOfSKn7hSbd9BOyjzyYGt PV5Gcr2bL2wg//Yp4gpnrPxGE0yUCGtfPDhGGUheVaEM3uRCf4jBDcfmDgCHnFmR GpHTY75a2BbKfE+gpeiQurWvnl2dKX3KmE6Z2AjTMSzEOk9XyPevBfxlZ/n60Ao= =bAEp -----END PGP SIGNATURE----- --9jxsPFA5p3P2qPhR--