svn commit: r260394 - in head/sys: dev/firewire net

Alexander V. Chernikov melifaro at FreeBSD.org
Tue Jan 7 16:01:22 UTC 2014


On 07.01.2014 19:59, Alexander V. Chernikov wrote:
> Author: melifaro
> Date: Tue Jan  7 15:59:33 2014
> New Revision: 260394
> URL: http://svnweb.freebsd.org/changeset/base/260394
> 
> Log:
>   Teach every SIOCGIFSTATUS provider to fill in ifs->ascii anyway.
>   Remove old bits of data concat for 'ascii' field.
>   Remove special SIOCGIFSTATUS handling from if.c (which Coverity yells at).
>   
>   Reported by:	Coverity
>   Coverity CID:	1147174

Actually this is CID 1017861.

>   MFC after:	2 weeks
> 
> Modified:
>   head/sys/dev/firewire/if_fwe.c
>   head/sys/net/if.c
>   head/sys/net/if_tap.c
>   head/sys/net/if_tun.c
> 
> Modified: head/sys/dev/firewire/if_fwe.c
> ==============================================================================
> --- head/sys/dev/firewire/if_fwe.c	Tue Jan  7 14:03:42 2014	(r260393)
> +++ head/sys/dev/firewire/if_fwe.c	Tue Jan  7 15:59:33 2014	(r260394)
> @@ -403,7 +403,7 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd,
>  {
>  	struct fwe_softc *fwe = ((struct fwe_eth_softc *)ifp->if_softc)->fwe;
>  	struct ifstat *ifs = NULL;
> -	int s, error, len;
> +	int s, error;
>  
>  	switch (cmd) {
>  		case SIOCSIFFLAGS:
> @@ -434,12 +434,8 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd,
>  		case SIOCGIFSTATUS:
>  			s = splimp();
>  			ifs = (struct ifstat *)data;
> -			len = strlen(ifs->ascii);
> -			if (len < sizeof(ifs->ascii))
> -				snprintf(ifs->ascii + len,
> -					sizeof(ifs->ascii) - len,
> -					"\tch %d dma %d\n",
> -						fwe->stream_ch, fwe->dma_ch);
> +			snprintf(ifs->ascii, sizeof(ifs->ascii),
> +			    "\tch %d dma %d\n",	fwe->stream_ch, fwe->dma_ch);
>  			splx(s);
>  			break;
>  		case SIOCSIFCAP:
> 
> Modified: head/sys/net/if.c
> ==============================================================================
> --- head/sys/net/if.c	Tue Jan  7 14:03:42 2014	(r260393)
> +++ head/sys/net/if.c	Tue Jan  7 15:59:33 2014	(r260394)
> @@ -2088,7 +2088,6 @@ static int
>  ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td)
>  {
>  	struct ifreq *ifr;
> -	struct ifstat *ifs;
>  	int error = 0;
>  	int new_flags, temp_flags;
>  	size_t namelen, onamelen;
> @@ -2425,9 +2424,6 @@ ifhwioctl(u_long cmd, struct ifnet *ifp,
>  		break;
>  
>  	case SIOCGIFSTATUS:
> -		ifs = (struct ifstat *)data;
> -		ifs->ascii[0] = '\0';
> -
>  	case SIOCGIFPSRCADDR:
>  	case SIOCGIFPDSTADDR:
>  	case SIOCGIFMEDIA:
> 
> Modified: head/sys/net/if_tap.c
> ==============================================================================
> --- head/sys/net/if_tap.c	Tue Jan  7 14:03:42 2014	(r260393)
> +++ head/sys/net/if_tap.c	Tue Jan  7 15:59:33 2014	(r260394)
> @@ -636,12 +636,12 @@ tapifioctl(struct ifnet *ifp, u_long cmd
>  
>  		case SIOCGIFSTATUS:
>  			ifs = (struct ifstat *)data;
> -			dummy = strlen(ifs->ascii);
>  			mtx_lock(&tp->tap_mtx);
> -			if (tp->tap_pid != 0 && dummy < sizeof(ifs->ascii))
> -				snprintf(ifs->ascii + dummy,
> -					sizeof(ifs->ascii) - dummy,
> +			if (tp->tap_pid != 0)
> +				snprintf(ifs->ascii, sizeof(ifs->ascii),
>  					"\tOpened by PID %d\n", tp->tap_pid);
> +			else
> +				ifs->ascii[0] = '\0';
>  			mtx_unlock(&tp->tap_mtx);
>  			break;
>  
> 
> Modified: head/sys/net/if_tun.c
> ==============================================================================
> --- head/sys/net/if_tun.c	Tue Jan  7 14:03:42 2014	(r260393)
> +++ head/sys/net/if_tun.c	Tue Jan  7 15:59:33 2014	(r260394)
> @@ -546,8 +546,10 @@ tunifioctl(struct ifnet *ifp, u_long cmd
>  		ifs = (struct ifstat *)data;
>  		mtx_lock(&tp->tun_mtx);
>  		if (tp->tun_pid)
> -			sprintf(ifs->ascii + strlen(ifs->ascii),
> +			snprintf(ifs->ascii, sizeof(ifs->ascii),
>  			    "\tOpened by PID %d\n", tp->tun_pid);
> +		else
> +			ifs->ascii[0] = '\0';
>  		mtx_unlock(&tp->tun_mtx);
>  		break;
>  	case SIOCSIFADDR:
> 



More information about the svn-src-head mailing list