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
MFC after:	2 weeks
This commit is contained in:
Alexander V. Chernikov 2014-01-07 15:59:33 +00:00
parent fdac1e8bdc
commit 50da3e886d
4 changed files with 10 additions and 16 deletions

View file

@ -403,7 +403,7 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
{
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, caddr_t data)
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:

View file

@ -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, caddr_t data, struct thread *td)
break;
case SIOCGIFSTATUS:
ifs = (struct ifstat *)data;
ifs->ascii[0] = '\0';
case SIOCGIFPSRCADDR:
case SIOCGIFPDSTADDR:
case SIOCGIFMEDIA:

View file

@ -636,12 +636,12 @@ tapifioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
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;

View file

@ -546,8 +546,10 @@ tunifioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
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: