svn commit: r337887 - head/usr.sbin/bhyve

Rodney W. Grimes freebsd at pdx.rh.CN85.dnsmgr.net
Thu Aug 16 14:03:57 UTC 2018


> 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
> ==============================================================================
> --- 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_softc *sc, char *o
>  		} else if (!strcmp("sectsz", xopts)) {
>  			sectsz = atoi(config);
>  		} else if (!strcmp("ser", xopts)) {
> +			/*
> +			 * This field indicates the Product Serial Number in
> +			 * 8-bit ASCII, unused bytes should be NULL characters.
> +			 * Ref: NVM Express Management Interface 1.0a.
> +			 */

I have seen this before on ATA devices,
if the vendor fills all bytes of PSN,
there well be no unused bytes,
so no null byte at the end,
and you end up with an unterminated string.  

Can you please verify that this edge case is handled correctly?
Thanks,
Rod

>  			memset(sc->ctrldata.sn, 0, sizeof(sc->ctrldata.sn));
>  			strncpy(sc->ctrldata.sn, config,
>  			        sizeof(sc->ctrldata.sn));
> 
> 

-- 
Rod Grimes                                                 rgrimes at freebsd.org


More information about the svn-src-all mailing list