diff options
Diffstat (limited to 'net/cmu-dhcpd/patches/patch-ad')
-rw-r--r-- | net/cmu-dhcpd/patches/patch-ad | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/net/cmu-dhcpd/patches/patch-ad b/net/cmu-dhcpd/patches/patch-ad new file mode 100644 index 00000000000..b6f241a7163 --- /dev/null +++ b/net/cmu-dhcpd/patches/patch-ad @@ -0,0 +1,115 @@ +$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 <sys/types.h> ++#include <limits.h> + #include <stdlib.h> + + #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) |