$NetBSD: patch-ad,v 1.1 2006/03/14 02:21:46 joerg Exp $ --- hashf.c.orig 2006-03-14 02:10:26.000000000 +0000 +++ hashf.c @@ -33,6 +33,7 @@ SOFTWARE. #include +#include #include #ifndef USE_BFUNCS @@ -168,10 +169,14 @@ hashf_Exists(hashtable, hashcode, compar hash_datum *key; { FILE *fp; +#if defined(NAME_MAX) + char name[NAME_MAX],buf[MAXELEMENTLEN]; +#else char name[MAXNAMLEN],buf[MAXELEMENTLEN]; +#endif int len,rc; - sprintf(name,"%s/%X",hashtable->dirname,hashcode % hashtable->size); + snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode % hashtable->size); fp=fopen(name,"r"); if(!fp) return FALSE; @@ -215,10 +220,14 @@ hashf_Insert(hashtable, hashcode, compar unsigned long elen; { FILE *fp; +#if defined(NAME_MAX) + char name[NAME_MAX],buf[MAXELEMENTLEN]; +#else char name[MAXNAMLEN],buf[MAXELEMENTLEN]; +#endif int rc,len; hashcode %= hashtable->size; - sprintf(name,"%s/%X",hashtable->dirname,hashcode); + snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode); fp=fopen(name,"a+"); if(!fp) @@ -265,10 +274,14 @@ hashf_Delete(hashtable, hashcode, compar hash_datum *key; { FILE *fp,*tmp; +#if defined(NAME_MAX) + char name[NAME_MAX],buf[MAXELEMENTLEN]; +#else char name[MAXNAMLEN],buf[MAXELEMENTLEN]; +#endif int rc,len; hashcode %= hashtable->size; - sprintf(name,"%s/%X",hashtable->dirname,hashcode); + snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode); fp=fopen(name,"r"); if(!fp) @@ -331,10 +344,14 @@ hashf_Replace(hashtable, hashcode, compa unsigned long elen; { FILE *fp,*tmp; +#if defined(NAME_MAX) + char name[NAME_MAX],buf[MAXELEMENTLEN]; +#else char name[MAXNAMLEN],buf[MAXELEMENTLEN]; +#endif int rc,len; char write,done; - sprintf(name,"%s/%X",hashtable->dirname,hashcode % hashtable->size); + snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode % hashtable->size); fp=fopen(name,"r"); if(!fp) @@ -432,11 +449,15 @@ hashf_Lookup(hashtable, hashcode, compar int *length; { FILE *fp; - char name[MAXNAMLEN],buf[MAXELEMENTLEN]; +#if defined(NAME_MAX) + char name[NAME_MAX],buf[MAXELEMENTLEN]; +#else + char name[MAXNAMLEN],buf[MAXELEMENTLEN]; +#endif int len,rc; hash_datum *p; - sprintf(name,"%s/%X",hashtable->dirname,hashcode % hashtable->size); + snprintf(name,sizeof(name),"%s/%X",hashtable->dirname,hashcode % hashtable->size); fp=fopen(name,"r"); if(!fp) return NULL; @@ -479,7 +500,11 @@ hashf_NextEntry(hashtable,length) int *length; { unsigned long len; +#if defined(NAME_MAX) + char name[NAME_MAX]; +#else char name[MAXNAMLEN]; +#endif int rc; hash_datum *p; struct dirent *direntry; @@ -494,7 +519,7 @@ hashf_NextEntry(hashtable,length) }while(direntry->d_name[0]=='.'); if(hashtable->next) fclose(hashtable->next); - sprintf(name,"%s/%s",hashtable->dirname,direntry->d_name); + snprintf(name,sizeof(name),"%s/%s",hashtable->dirname,direntry->d_name); hashtable->next=fopen(name,"r"); rc=fread(&len,4,1,hashtable->next); if(rc==0)