From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 945 invoked by alias); 29 Apr 2003 07:51:30 -0000 Mailing-List: contact ecos-maintainers-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: ecos-maintainers-owner@sources.redhat.com Received: (qmail 938 invoked from network); 29 Apr 2003 07:51:30 -0000 Date: Tue, 29 Apr 2003 07:51:00 -0000 From: Andrew Lunn To: eCos Maintainers Subject: Aprove: M_ZERO cyg_net_malloc flag Message-ID: <20030429075123.GY21714@biferten.ma.tech.ascom.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i X-Filter-Version: 1.6 (rubicon) X-SW-Source: 2003-04/txt/msg00061.txt.bz2 Aprovel request for the 2.0 branch: Name: M_ZERO flag for cyg_net_malloc() Purpose: The bsd_tcpip MALLOC macro can pass the flag M_ZERO. cyg_net_malloc ignores this so leaving random junk in the memory returned. This can then cause calls like getpeername and getsockname to return sockaddr with junk in there tails. When such a sockaddr is then passed back into the stack with a bind call, the bind fails because of the junk. Risk: Small. Affected packages: bsd_tcpip and anything depending on it. Andrew Index: packages/net/bsd_tcpip//current/ChangeLog =================================================================== RCS file: /cvs/ecos/ecos-opt/net/net/bsd_tcpip/current/ChangeLog,v retrieving revision 1.17.2.1 diff -u -r1.17.2.1 ChangeLog --- packages/net/bsd_tcpip//current/ChangeLog 14 Mar 2003 13:44:37 -0000 1.17.2.1 +++ packages/net/bsd_tcpip//current/ChangeLog 29 Apr 2003 07:46:10 -0000 @@ -1,3 +1,8 @@ +2003-04-29 Andrew Lunn + + * src/ecos/support.c (cyg_net_malloc): Honour the M_ZERO + flag. Otherwise we get random junk in places we don't want it. + 2003-03-14 Andrew Lunn * src/sys/net/if.c (if_attach): Removed printf which causes the Index: packages/net/bsd_tcpip//current/src/ecos/support.c =================================================================== RCS file: /cvs/ecos/ecos-opt/net/net/bsd_tcpip/current/src/ecos/support.c,v retrieving revision 1.4 diff -u -r1.4 support.c --- packages/net/bsd_tcpip//current/src/ecos/support.c 3 Dec 2002 17:22:46 -0000 1.4 +++ packages/net/bsd_tcpip//current/src/ecos/support.c 29 Apr 2003 07:46:11 -0000 @@ -201,6 +201,9 @@ } else { res = cyg_mempool_var_alloc(net_mem, size); } + if ((flags & M_ZERO) && res) { + memset(res,0,size); + } FINISH_STATS(stats_malloc); log(LOG_MDEBUG, "%p\n", res); return (res);