Skip site navigation (1)Skip section navigation (2)
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>