$OpenBSD: patch-etc_atalkd_config_c,v 1.1 2006/09/22 05:56:25 pvalchev Exp $
--- etc/atalkd/config.c.orig	Sun Feb  6 05:16:02 2005
+++ etc/atalkd/config.c	Sat Dec 31 01:17:42 2005
@@ -101,12 +101,11 @@ char **parseline(const char *line)
 	return NULL;
     }
 
-    buffer = (char *) malloc( strlen( p ) + 1 );
-    if ( !buffer ) {
-	/* FIXME: error handling */
-	return NULL;
-    }
-    strcpy( buffer, p );
+    buffer = strdup(p);
+	if (buffer == NULL) {
+		/* FIXME: error handling */
+		return NULL;
+	}
     tmpbuf = buffer;
 
     argv = (char **) malloc( ARGV_CHUNK_SIZE * sizeof( char * ) );
@@ -207,9 +206,9 @@ int writeconf( cf )
     }
 
     if (( p = strrchr( path, '/' )) == NULL ) {
-	strcpy( newpath, _PATH_ATALKDTMP );
+	strlcpy( newpath, _PATH_ATALKDTMP, sizeof(newpath) );
     } else {
-	sprintf( newpath, "%.*s/%s", (int)(p - path), path, _PATH_ATALKDTMP );
+	snprintf( newpath, sizeof(newpath), "%.*s/%s", (int)(p - path), path, _PATH_ATALKDTMP );
     }
     if (( fd = open( newpath, O_WRONLY|O_CREAT|O_TRUNC, mode )) < 0 ) {
 	LOG(log_error, logtype_atalkd, "%s: %s", newpath, strerror(errno) );
@@ -832,7 +831,7 @@ struct interface *newiface( name )
 int plumb()
 {
     struct interface	*iface;
-    char		device[ MAXPATHLEN + 1], *p;
+    char		device[ MAXPATHLEN ], *p;
     int			fd, ppa;
 
     for ( iface = interfaces; iface != NULL; iface = iface->i_next ) {
@@ -840,8 +839,8 @@ int plumb()
 	    continue;
 	}
 
-	strcpy( device, "/dev/" );
-	strcat( device, iface->i_name );
+	strlcpy( device, "/dev/", sizeof(device) );
+	strlcat( device, iface->i_name, sizeof(device) );
 	if (( p = strpbrk( device, "0123456789" )) == NULL ) {
 	    LOG(log_error, logtype_atalkd, "plumb: invalid device: %s", device );
 	    return -1;
