pkgsrc/net/cmu-dhcpd/patches/patch-ad
2006-03-14 02:21:46 +00:00

115 lines
3.2 KiB
Text

$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)