Date: Wed, 26 Dec 2001 10:55:06 -0500 (EST) From: Robert Watson <rwatson@freebsd.org> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/33201: net/net_osdep.c:if_name is broken Message-ID: <200112261555.fBQFt6445948@fledge.watson.org>
next in thread | raw e-mail | index | archive | help
>Number: 33201 >Category: kern >Synopsis: net/net_osdep.c:if_name is broken >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Dec 26 08:00:01 PST 2001 >Closed-Date: >Last-Modified: >Originator: Robert Watson >Release: FreeBSD 5.0-CURRENT i386 >Organization: NAI Labs >Environment: System: FreeBSD curry.decoverly.watson.org 5.0-CURRENT FreeBSD 5.0-CURRENT #0: Sun Dec 23 23:15:06 EST 2001 rwatson@curry.decoverly.watson.org:/usr/obj/usr/src/sys/BKTR i386 >Description: While it doesn't actually currently result in a failure that I can find, if_name() is written in a very failure-prone style: const char * if_name(ifp) struct ifnet *ifp; { #define MAXNUMBUF 8 static char nam[MAXNUMBUF][IFNAMSIZ + 10]; /*enough?*/ static int ifbufround = 0; char *cp; ifbufround = (ifbufround + 1) % MAXNUMBUF; cp = nam[ifbufround]; snprintf(cp, IFNAMSIZ + 10, "%s%d", ifp->if_name, ifp->if_unit); return((const char *)cp); #undef MAXNUMBUF } Returning pointers into the stack space of a function that is exiting is *never* a good idea. Also, this code suffers from a continuing confusion about the possible size of interface name strings that seems widespread through the sack. IFNAMSIZ should either be sufficient and used everywhere, or be fixed. As it stands, I found several hard-coded variants on the them, and the ifunit() code to build a device name also looked fairly suspect. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200112261555.fBQFt6445948>