]> git.pld-linux.org Git - packages/autofs.git/blame - autofs-5.0.4-make-MAX_ERR_BUF-and-PARSE_MAX_BUF-use-easier-to-audit.patch
- build ldap extension conditionally (this module needs krb5->heimdal conversion).
[packages/autofs.git] / autofs-5.0.4-make-MAX_ERR_BUF-and-PARSE_MAX_BUF-use-easier-to-audit.patch
CommitLineData
e5fd101c
PS
1autofs-5.0.4 - make MAX_ERR_BUF and PARSE_MAX_BUF use easier to audit
2
3From: Valerie Aurora Henson <vaurora@redhat.com>
4
5Non-critical changes to make auditing buffer lengths easier.
6
7* Some buffers were the wrong (too big) size, some were used twice for
8 different purposes.
9* Use sizeof(buf) instead of repeating the *MAX* define in functions
10 that need to know the size of a statically allocated buffer.
11* Fix a compiler warning about discarding the const on a string.
12---
13
14 CHANGELOG | 1 +
15 modules/lookup_ldap.c | 51 ++++++++++++++++++++++---------------------------
16 2 files changed, 24 insertions(+), 28 deletions(-)
17
18
19diff --git a/CHANGELOG b/CHANGELOG
20index afd1335..417a001 100644
21--- a/CHANGELOG
22+++ b/CHANGELOG
23@@ -15,6 +15,7 @@
24 - add "forcestart" and "forcerestart" init script options to allow
25 use of 5.0.3 strartup behavior if required.
26 - always read entire file map into cache to speed lookups.
27+- make MAX_ERR_BUF and PARSE_MAX_BUF use easier to audit.
28
29 4/11/2008 autofs-5.0.4
30 -----------------------
31diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c
32index bee97ae..d8a60d3 100644
33--- a/modules/lookup_ldap.c
34+++ b/modules/lookup_ldap.c
35@@ -272,7 +272,7 @@ LDAP *init_ldap_connection(unsigned logopt, const char *uri, struct lookup_conte
36
37 static int get_query_dn(unsigned logopt, LDAP *ldap, struct lookup_context *ctxt, const char *class, const char *key)
38 {
39- char buf[PARSE_MAX_BUF];
40+ char buf[MAX_ERR_BUF];
41 char *query, *dn, *qdn;
42 LDAPMessage *result, *e;
43 struct ldap_searchdn *sdns = NULL;
44@@ -296,7 +296,7 @@ static int get_query_dn(unsigned logopt, LDAP *ldap, struct lookup_context *ctxt
45
46 query = alloca(l);
47 if (query == NULL) {
48- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
49+ char *estr = strerror_r(errno, buf, sizeof(buf));
50 crit(logopt, MODPREFIX "alloca: %s", estr);
51 return NSS_STATUS_UNAVAIL;
52 }
53@@ -1082,7 +1082,7 @@ static int parse_server_string(unsigned logopt, const char *url, struct lookup_c
54 }
55 if (!tmp) {
56 char *estr;
57- estr = strerror_r(errno, buf, MAX_ERR_BUF);
58+ estr = strerror_r(errno, buf, sizeof(buf));
59 logerr(MODPREFIX "malloc: %s", estr);
60 return 0;
61 }
62@@ -1104,7 +1104,7 @@ static int parse_server_string(unsigned logopt, const char *url, struct lookup_c
63 tmp = malloc(l + 1);
64 if (!tmp) {
65 char *estr;
66- estr = strerror_r(errno, buf, MAX_ERR_BUF);
67+ estr = strerror_r(errno, buf, sizeof(buf));
68 crit(logopt, MODPREFIX "malloc: %s", estr);
69 return 0;
70 }
71@@ -1139,7 +1139,7 @@ static int parse_server_string(unsigned logopt, const char *url, struct lookup_c
72 /* Isolate the server's name. */
73 if (!tmp) {
74 char *estr;
75- estr = strerror_r(errno, buf, MAX_ERR_BUF);
76+ estr = strerror_r(errno, buf, sizeof(buf));
77 logerr(MODPREFIX "malloc: %s", estr);
78 return 0;
79 }
80@@ -1180,7 +1180,7 @@ static int parse_server_string(unsigned logopt, const char *url, struct lookup_c
81 ctxt->mapname = map;
82 else {
83 char *estr;
84- estr = strerror_r(errno, buf, MAX_ERR_BUF);
85+ estr = strerror_r(errno, buf, sizeof(buf));
86 logerr(MODPREFIX "malloc: %s", estr);
87 if (ctxt->server)
88 free(ctxt->server);
89@@ -1191,7 +1191,7 @@ static int parse_server_string(unsigned logopt, const char *url, struct lookup_c
90 base = malloc(l + 1);
91 if (!base) {
92 char *estr;
93- estr = strerror_r(errno, buf, MAX_ERR_BUF);
94+ estr = strerror_r(errno, buf, sizeof(buf));
95 logerr(MODPREFIX "malloc: %s", estr);
96 if (ctxt->server)
97 free(ctxt->server);
98@@ -1205,7 +1205,7 @@ static int parse_server_string(unsigned logopt, const char *url, struct lookup_c
99 char *map = malloc(l + 1);
100 if (!map) {
101 char *estr;
102- estr = strerror_r(errno, buf, MAX_ERR_BUF);
103+ estr = strerror_r(errno, buf, sizeof(buf));
104 logerr(MODPREFIX "malloc: %s", estr);
105 if (ctxt->server)
106 free(ctxt->server);
107@@ -1318,7 +1318,7 @@ int lookup_init(const char *mapfmt, int argc, const char *const *argv, void **co
108 /* If we can't build a context, bail. */
109 ctxt = malloc(sizeof(struct lookup_context));
110 if (!ctxt) {
111- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
112+ char *estr = strerror_r(errno, buf, sizeof(buf));
113 logerr(MODPREFIX "malloc: %s", estr);
114 return 1;
115 }
116@@ -1419,8 +1419,9 @@ int lookup_read_master(struct master *master, time_t age, void *context)
117 unsigned int timeout = master->default_timeout;
118 unsigned int logging = master->default_logging;
119 unsigned int logopt = master->logopt;
120- int rv, l, count, blen;
121- char buf[PARSE_MAX_BUF];
122+ int rv, l, count;
123+ char buf[MAX_ERR_BUF];
124+ char parse_buf[PARSE_MAX_BUF];
125 char *query;
126 LDAPMessage *result, *e;
127 char *class, *info, *entry;
128@@ -1442,7 +1443,7 @@ int lookup_read_master(struct master *master, time_t age, void *context)
129
130 query = alloca(l);
131 if (query == NULL) {
132- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
133+ char *estr = strerror_r(errno, buf, sizeof(buf));
134 logerr(MODPREFIX "alloca: %s", estr);
135 return NSS_STATUS_UNAVAIL;
136 }
137@@ -1532,19 +1533,13 @@ int lookup_read_master(struct master *master, time_t age, void *context)
138 goto next;
139 }
140
141- blen = strlen(*keyValue) + 1 + strlen(*values) + 2;
142- if (blen > PARSE_MAX_BUF) {
143+ if (snprintf(parse_buf, sizeof(parse_buf), "%s %s",
144+ *keyValue, *values) >= sizeof(parse_buf)) {
145 error(logopt, MODPREFIX "map entry too long");
146 ldap_value_free(values);
147 goto next;
148 }
149- memset(buf, 0, PARSE_MAX_BUF);
150-
151- strcpy(buf, *keyValue);
152- strcat(buf, " ");
153- strcat(buf, *values);
154-
155- master_parse_entry(buf, timeout, logging, age);
156+ master_parse_entry(parse_buf, timeout, logging, age);
157 next:
158 ldap_value_free(keyValue);
159 e = ldap_next_entry(ldap, e);
160@@ -1561,7 +1556,7 @@ static int get_percent_decoded_len(const char *name)
161 {
162 int escapes = 0;
163 int escaped = 0;
164- char *tmp = name;
165+ const char *tmp = name;
166 int look_for_close = 0;
167
168 while (*tmp) {
169@@ -2060,7 +2055,7 @@ static int do_get_entries(struct ldap_search_params *sp, struct map_source *sour
170 mapent = malloc(v_len + 1);
171 if (!mapent) {
172 char *estr;
173- estr = strerror_r(errno, buf, MAX_ERR_BUF);
174+ estr = strerror_r(errno, buf, sizeof(buf));
175 logerr(MODPREFIX "malloc: %s", estr);
176 ldap_value_free_len(bvValues);
177 goto next;
178@@ -2080,7 +2075,7 @@ static int do_get_entries(struct ldap_search_params *sp, struct map_source *sour
179 mapent_len = new_size;
180 } else {
181 char *estr;
182- estr = strerror_r(errno, buf, MAX_ERR_BUF);
183+ estr = strerror_r(errno, buf, sizeof(buf));
184 logerr(MODPREFIX "realloc: %s", estr);
185 }
186 }
187@@ -2181,7 +2176,7 @@ static int read_one_map(struct autofs_point *ap,
188
189 sp.query = alloca(l);
190 if (sp.query == NULL) {
191- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
192+ char *estr = strerror_r(errno, buf, sizeof(buf));
193 logerr(MODPREFIX "malloc: %s", estr);
194 return NSS_STATUS_UNAVAIL;
195 }
196@@ -2335,7 +2330,7 @@ static int lookup_one(struct autofs_point *ap,
197
198 query = alloca(l);
199 if (query == NULL) {
200- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
201+ char *estr = strerror_r(errno, buf, sizeof(buf));
202 crit(ap->logopt, MODPREFIX "malloc: %s", estr);
203 if (enc_len1) {
204 free(enc_key1);
205@@ -2507,7 +2502,7 @@ static int lookup_one(struct autofs_point *ap,
206 mapent = malloc(v_len + 1);
207 if (!mapent) {
208 char *estr;
209- estr = strerror_r(errno, buf, MAX_ERR_BUF);
210+ estr = strerror_r(errno, buf, sizeof(buf));
211 logerr(MODPREFIX "malloc: %s", estr);
212 ldap_value_free_len(bvValues);
213 goto next;
214@@ -2527,7 +2522,7 @@ static int lookup_one(struct autofs_point *ap,
215 mapent_len = new_size;
216 } else {
217 char *estr;
218- estr = strerror_r(errno, buf, MAX_ERR_BUF);
219+ estr = strerror_r(errno, buf, sizeof(buf));
220 logerr(MODPREFIX "realloc: %s", estr);
221 }
222 }
This page took 0.121527 seconds and 4 git commands to generate.