Zero out stack memory before copying out to requesting process.
authorJeffrey Hsu <hsu@dragonflybsd.org>
Fri, 21 Apr 2006 19:43:58 +0000 (19:43 +0000)
committerJeffrey Hsu <hsu@dragonflybsd.org>
Fri, 21 Apr 2006 19:43:58 +0000 (19:43 +0000)
NetBSD Security Advisory 2006-005:  minor stack information leak.
Same as NetBSD revs 1.35 and 1.36.  Originally reported by Xin Li.

sys/net/bridge/if_bridge.c

index 8977627..82ef9f1 100644 (file)
@@ -66,7 +66,7 @@
  * $OpenBSD: if_bridge.c,v 1.60 2001/06/15 03:38:33 itojun Exp $
  * $NetBSD: if_bridge.c,v 1.31 2005/06/01 19:45:34 jdc Exp $
  * $FreeBSD: src/sys/net/if_bridge.c,v 1.26 2005/10/13 23:05:55 thompsa Exp $
- * $DragonFly: src/sys/net/bridge/if_bridge.c,v 1.5 2006/01/31 19:05:37 dillon Exp $
+ * $DragonFly: src/sys/net/bridge/if_bridge.c,v 1.6 2006/04/21 19:43:58 hsu Exp $
  */
 
 /*
@@ -541,6 +541,7 @@ bridge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data, struct ucred *cr)
                        break;
                }
 
+               memset(&args, 0, sizeof(args));
                if (bc->bc_flags & BC_F_COPYIN) {
                        error = copyin(ifd->ifd_data, &args, ifd->ifd_len);
                        if (error)
@@ -845,6 +846,7 @@ bridge_ioctl_gifs(struct bridge_softc *sc, void *arg)
 
        count = 0;
        len = bifc->ifbic_len;
+       memset(&breq, 0, sizeof breq);
        LIST_FOREACH(bif, &sc->sc_iflist, bif_next) {
                if (len < sizeof(breq))
                        break;
@@ -882,6 +884,7 @@ bridge_ioctl_rts(struct bridge_softc *sc, void *arg)
        LIST_FOREACH(brt, &sc->sc_rtlist, brt_list) {
                if (len < sizeof(bareq))
                        goto out;
+               memset(&bareq, 0, sizeof(bareq));
                strlcpy(bareq.ifba_ifsname, brt->brt_ifp->if_xname,
                    sizeof(bareq.ifba_ifsname));
                memcpy(bareq.ifba_dst, brt->brt_addr, sizeof(brt->brt_addr));