$OpenBSD: patch-bin_megatron_nad_c,v 1.2 2007/10/25 18:57:32 steven Exp $ --- bin/megatron/nad.c.orig Thu Feb 10 02:23:08 2005 +++ bin/megatron/nad.c Thu Oct 25 20:30:05 2007 @@ -414,8 +414,8 @@ void select_charset( int options) #endif /* HEXOUTPUT */ struct nad_file_data { - char macname[ MAXPATHLEN + 1 ]; - char adpath[ 2 ][ MAXPATHLEN + 1]; + char macname[ MAXPATHLEN]; + char adpath[ 2 ][ MAXPATHLEN]; int offset[ NUMFORKS ]; struct adouble ad; } nad; @@ -451,9 +451,10 @@ int nad_open( path, openflags, fh, options ) if ( openflags == O_RDONLY ) { initvol(path); - strcpy( nad.adpath[0], path ); - strcpy( nad.adpath[1], - nad.ad.ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF )); + strlcpy( nad.adpath[0], path, sizeof(nad.adpath[0]) ); + strlcpy( nad.adpath[1], + nad.ad.ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF ), + sizeof(nad.adpath[1])); for ( fork = 0 ; fork < NUMFORKS ; fork++ ) { if ( stat( nad.adpath[ fork ], &st ) < 0 ) { if ( errno == ENOENT ) { @@ -478,10 +479,11 @@ int nad_open( path, openflags, fh, options ) } else { initvol ("."); - strcpy( nad.macname, fh->name ); - strcpy( nad.adpath[0], mtoupath( nad.macname )); - strcpy( nad.adpath[1], - nad.ad.ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF )); + strlcpy( nad.macname, fh->name, sizeof(nad.macname) ); + strlcpy( nad.adpath[0], mtoupath( nad.macname ), sizeof(nad.adpath[0])); + strlcpy( nad.adpath[1], + nad.ad.ad_path( nad.adpath[0], ADFLAGS_DF|ADFLAGS_HF ), + sizeof(nad.adpath[1]) ); #if DEBUG fprintf(stderr, "%s\n", nad.macname); fprintf(stderr, "%s is adpath[0]\n", nad.adpath[0]); @@ -512,7 +514,7 @@ int nad_header_read( fh ) memcpy( nad.macname, ad_entry( &nad.ad, ADEID_NAME ), ad_getentrylen( &nad.ad, ADEID_NAME )); nad.macname[ ad_getentrylen( &nad.ad, ADEID_NAME ) ] = '\0'; - strcpy( fh->name, nad.macname ); + strlcpy( fh->name, nad.macname, sizeof(fh->name) ); #endif /* just in case there's nothing in macname */ @@ -521,9 +523,9 @@ int nad_header_read( fh ) p = nad.adpath[DATA]; else p++; #if 0 - strcpy(fh->name, utompath(nad.adpath[DATA])); + strlcpy(fh->name, utompath(nad.adpath[DATA]), sizeof(fh->name)); #endif - strcpy(fh->name, utompath(p)); + strlcpy(fh->name, utompath(p), sizeof(fh->name)); } if ( stat( nad.adpath[ DATA ], &st ) < 0 ) {