Date: Thu, 13 Sep 2001 22:42:23 -0400 (EDT) From: marcus@marcuscom.com To: FreeBSD-gnats-submit@freebsd.org Subject: ports/30566: [MAINTAINER UPDATE] Fix malloc bug in net/netatalk Message-ID: <200109140242.f8E2gNi07731@shumai.marcuscom.com>
next in thread | raw e-mail | index | archive | help
>Number: 30566 >Category: ports >Synopsis: [MAINTAINER UPDATE] Fix malloc bug in net/netatalk >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-ports >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Thu Sep 13 19:50:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Joe Marcus Clarke >Release: FreeBSD 4.3-RELEASE i386 >Organization: MarcusCom, Inc. >Environment: System: FreeBSD shumai.marcuscom.com 4.3-RELEASE FreeBSD 4.3-RELEASE #0: Sun May 6 01:46:59 EDT 2001 root@shumai.marcuscom.com:/usr/src/sys/compile/SHUMAI i386 >Description: Netatalk contains a nasty malloc bug when no atalkd.conf file exists. This bug casues atalkd to crash, and other apps to misbehave. This patch fixes those problems as well as makes bento happy with regard to the plist. >How-To-Repeat: >Fix: diff -ruN netatalk.orig/Makefile netatalk/Makefile --- netatalk.orig/Makefile Thu Sep 13 02:12:18 2001 +++ netatalk/Makefile Thu Sep 13 02:06:11 2001 @@ -2,12 +2,12 @@ # Date created: 23 Jul 1997 # Whom: stb # -# $FreeBSD: ports/net/netatalk/Makefile,v 1.26 2001/09/10 12:08:07 knu Exp $ +# $FreeBSD: ports/net/netatalk/Makefile,v 1.25 2001/09/08 01:38:58 petef Exp $ # PORTNAME= netatalk PORTVERSION= 1.5p7 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= net print MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= netatalk @@ -59,14 +59,14 @@ MAN4= atalk.4 MAN5= AppleVolumes.default.5 afpd.conf.5 atalkd.conf.5 \ netatalk.conf.5 papd.conf.5 -MAN8= afpd.8 atalkd.8 pap.8 papd.8 papstatus.8 psf.8 +MAN8= afpd.8 atalkd.8 pap.8 papd.8 papstatus.8 psf.8 timelord.8 post-extract: @${SED} -e "s=%%PREFIX%%=${PREFIX}=g" ${FILESDIR}/netatalk.sh \ > ${WRKSRC}/netatalk.sh post-configure: - @${TOUCH} ${WRKSRC}/config/Makefile.in + @${TOUCH} -f ${WRKSRC}/config/Makefile.in post-install: @${RM} -f ${PREFIX}/bin/nu ${PREFIX}/bin/lp2pap.sh \ diff -ruN netatalk.orig/files/patch-aj netatalk/files/patch-aj --- netatalk.orig/files/patch-aj Wed Dec 31 19:00:00 1969 +++ netatalk/files/patch-aj Thu Sep 13 00:29:01 2001 @@ -0,0 +1,104 @@ +--- libatalk/util/getiface.c.orig Thu Sep 13 00:28:21 2001 ++++ libatalk/util/getiface.c Thu Sep 13 00:28:30 2001 +@@ -43,13 +43,6 @@ + { + /* if we've run out of room, allocate some more. just return + * the present list if we can't. */ +- if (*i >= *length) { +- char **new = realloc(list, sizeof(char **)*(*length + IFACE_NUM)); +- +- if (!new) /* just break if we can't allocate anything */ +- return -1; +- *length += IFACE_NUM; +- } + + if ((list[*i] = strdup(name)) == NULL) + return -1; +@@ -60,30 +53,32 @@ + } + + +-static int getifaces(const int sockfd, char **list, int *length) ++static int getifaces(const int sockfd, char ***list, int *length) + { + #ifdef HAVE_IFNAMEINDEX + struct if_nameindex *ifstart, *ifs; + int i = 0; ++ char **new; + +- if (!list || *length < 1) +- return 0; +- + ifs = ifstart = if_nameindex(); ++ ++ new = (char **) malloc((sizeof(ifs)/sizeof(struct if_nameindex) + 1) * sizeof(char *)); + while (ifs && ifs->if_name) { + /* just bail if there's a problem */ +- if (addname(list, &i, length, ifs->if_name) < 0) ++ if (addname(new, &i, length, ifs->if_name) < 0) + break; + ifs++; + } + + if_freenameindex(ifstart); ++ *list = new; + return i; + + #else + struct ifconf ifc; + struct ifreq ifrs[ 64 ], *ifr, *nextifr; + int ifrsize, i = 0; ++ char **new; + + if (!list || *length < 1) + return 0; +@@ -96,6 +91,7 @@ + return 0; + } + ++ new = (char **) malloc((ifc.ifc_len/sizeof(struct ifreq) + 1) * sizeof(char *)); + for ( ifr = ifc.ifc_req; ifc.ifc_len >= sizeof( struct ifreq ); + ifc.ifc_len -= ifrsize, ifr = nextifr ) { + #ifdef BSD4_4 +@@ -108,9 +104,10 @@ + nextifr = (struct ifreq *)((caddr_t)ifr + ifrsize ); + + /* just bail if there's a problem */ +- if (addname(list, &i, length, ifr->ifr_name) < 0) ++ if (addname(new, &i, length, ifr->ifr_name) < 0) + break; + } ++ *list = new; + return i; + #endif + } +@@ -122,17 +119,14 @@ + */ + char **getifacelist() + { +- char **list = (char **) malloc(sizeof(char **)*(IFACE_NUM + 1)); ++ char **list; + char **new; +- int length = IFACE_NUM, i, fd; ++ int length, i, fd; + +- if (!list) +- return NULL; +- + if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) + return NULL; + +- if ((i = getifaces(fd, list, &length)) == 0) { ++ if ((i = getifaces(fd, &list, &length)) == 0) { + free(list); + close(fd); + return NULL; +@@ -140,7 +134,7 @@ + close(fd); + + if ((i < length) && +- (new = (char **) realloc(list, sizeof(char **)*(i + 1)))) ++ (new = (char **) realloc(list, (i + 1) * sizeof(char *)))) + return new; + + return list; diff -ruN netatalk.orig/pkg-plist netatalk/pkg-plist --- netatalk.orig/pkg-plist Thu Sep 13 02:12:18 2001 +++ netatalk/pkg-plist Thu Sep 13 02:03:30 2001 @@ -142,3 +142,4 @@ lib/libatalk.la share/aclocal/netatalk.m4 share/netatalk/pagecount.ps +@dirrm share/netatalk >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200109140242.f8E2gNi07731>