summaryrefslogtreecommitdiff
path: root/net/cmu-dhcpd/patches/patch-ad
blob: b6f241a7163eaeae9dc157015d7dd6182dc21e20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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)