On 2015/02/12 12:36, Stuart Henderson wrote:
> On 2015/02/12 12:32, Zé Loff wrote:
> > 
> > Apologies in advance if this has already been spotted and/or fixed, but
> > I'm getting:
> > 
> > $ netstat -w 1 
> > netstat(20903) in realloc(): error: bogus pointer (double free?) 
> > 0x71b14123800
> 
> Are your kernel and userland in-sync?
> 

Oh, yes it does happen with them in-sync, it only happens when there are
more interfaces than fit in the buffer from the original sysctl estimate.
buf was not initialized so pointing to random memory.

Index: if.c
===================================================================
RCS file: /cvs/src/usr.bin/netstat/if.c,v
retrieving revision 1.72
diff -u -p -r1.72 if.c
--- if.c        9 Feb 2015 12:25:03 -0000       1.72
+++ if.c        12 Feb 2015 12:49:05 -0000
@@ -503,7 +503,7 @@ fetchifs(void)
        struct if_data *ifd;
        struct sockaddr *sa, *rti_info[RTAX_MAX];
        struct sockaddr_dl *sdl;
-       char *buf, *next, *lim;
+       char *buf = NULL, *next, *lim;
        char name[IFNAMSIZ];
        size_t len;
        int takeit = 0;
Index: mroute6.c
===================================================================
RCS file: /cvs/src/usr.bin/netstat/mroute6.c,v
retrieving revision 1.17
diff -u -p -r1.17 mroute6.c
--- mroute6.c   9 Feb 2015 12:25:03 -0000       1.17
+++ mroute6.c   12 Feb 2015 12:49:05 -0000
@@ -84,7 +84,7 @@
 void
 mroute6pr(void)
 {
-       char *buf;
+       char *buf = NULL;
        char fmtbuf[FMT_SCALED_STRSIZE];
        struct mf6cinfo *mfc;
        struct mif6info *mif;


Reply via email to