Signed-off-by: Valerie Aurora Henson <[email protected]>
---
modules/lookup_ldap.c | 49 ++++++++++++++++++++++---------------------------
1 files changed, 22 insertions(+), 27 deletions(-)
diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c
index 42c3235..0ef7bcf 100644
--- a/modules/lookup_ldap.c
+++ b/modules/lookup_ldap.c
@@ -275,7 +275,7 @@ LDAP *init_ldap_connection(unsigned logopt, const char
*uri, struct lookup_conte
static int get_query_dn(unsigned logopt, LDAP *ldap, struct lookup_context
*ctxt, const char *class, const char *key)
{
- char buf[PARSE_MAX_BUF];
+ char buf[MAX_ERR_BUF];
char *query, *dn, *qdn;
LDAPMessage *result, *e;
struct ldap_searchdn *sdns = NULL;
@@ -299,7 +299,7 @@ static int get_query_dn(unsigned logopt, LDAP *ldap, struct
lookup_context *ctxt
query = alloca(l);
if (query == NULL) {
- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ char *estr = strerror_r(errno, buf, sizeof(buf));
crit(logopt, MODPREFIX "alloca: %s", estr);
return NSS_STATUS_UNAVAIL;
}
@@ -1074,7 +1074,7 @@ static int parse_server_string(unsigned logopt, const
char *url, struct lookup_c
}
if (!tmp) {
char *estr;
- estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
return 0;
}
@@ -1096,7 +1096,7 @@ static int parse_server_string(unsigned logopt, const
char *url, struct lookup_c
tmp = malloc(l + 1);
if (!tmp) {
char *estr;
- estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ estr = strerror_r(errno, buf, sizeof(buf));
crit(logopt, MODPREFIX "malloc: %s", estr);
return 0;
}
@@ -1131,7 +1131,7 @@ static int parse_server_string(unsigned logopt, const
char *url, struct lookup_c
/* Isolate the server's name. */
if (!tmp) {
char *estr;
- estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
return 0;
}
@@ -1172,7 +1172,7 @@ static int parse_server_string(unsigned logopt, const
char *url, struct lookup_c
ctxt->mapname = map;
else {
char *estr;
- estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
if (ctxt->server)
free(ctxt->server);
@@ -1183,7 +1183,7 @@ static int parse_server_string(unsigned logopt, const
char *url, struct lookup_c
base = malloc(l + 1);
if (!base) {
char *estr;
- estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
if (ctxt->server)
free(ctxt->server);
@@ -1197,7 +1197,7 @@ static int parse_server_string(unsigned logopt, const
char *url, struct lookup_c
char *map = malloc(l + 1);
if (!map) {
char *estr;
- estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
if (ctxt->server)
free(ctxt->server);
@@ -1310,7 +1310,7 @@ int lookup_init(const char *mapfmt, int argc, const char
*const *argv, void **co
/* If we can't build a context, bail. */
ctxt = malloc(sizeof(struct lookup_context));
if (!ctxt) {
- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ char *estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
return 1;
}
@@ -1411,8 +1411,9 @@ int lookup_read_master(struct master *master, time_t age,
void *context)
unsigned int timeout = master->default_timeout;
unsigned int logging = master->default_logging;
unsigned int logopt = master->logopt;
- int rv, l, count, blen;
- char buf[PARSE_MAX_BUF];
+ int rv, l, count;
+ char buf[MAX_ERR_BUF];
+ char parse_buf[PARSE_MAX_BUF];
char *query;
LDAPMessage *result, *e;
char *class, *info, *entry;
@@ -1434,7 +1435,7 @@ int lookup_read_master(struct master *master, time_t age,
void *context)
query = alloca(l);
if (query == NULL) {
- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ char *estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "alloca: %s", estr);
return NSS_STATUS_UNAVAIL;
}
@@ -1524,18 +1525,12 @@ int lookup_read_master(struct master *master, time_t
age, void *context)
goto next;
}
- blen = strlen(*keyValue) + 1 + strlen(*values) + 2;
- if (blen > PARSE_MAX_BUF) {
+ if (snprintf(parse_buf, sizeof(parse_buf), "%s %s",
+ *keyValue, *values) > sizeof(parse_buf)) {
error(logopt, MODPREFIX "map entry too long");
ldap_value_free(values);
goto next;
}
- memset(buf, 0, PARSE_MAX_BUF);
-
- strcpy(buf, *keyValue);
- strcat(buf, " ");
- strcat(buf, *values);
-
master_parse_entry(buf, timeout, logging, age);
next:
ldap_value_free(keyValue);
@@ -1553,7 +1548,7 @@ static int get_percent_decoded_len(const char *name)
{
int escapes = 0;
int escaped = 0;
- char *tmp = name;
+ const char *tmp = name;
int look_for_close = 0;
while (*tmp) {
@@ -2052,7 +2047,7 @@ static int do_get_entries(struct ldap_search_params *sp,
struct map_source *sour
mapent = malloc(v_len + 1);
if (!mapent) {
char *estr;
- estr = strerror_r(errno, buf,
MAX_ERR_BUF);
+ estr = strerror_r(errno, buf,
sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
ldap_value_free_len(bvValues);
goto next;
@@ -2072,7 +2067,7 @@ static int do_get_entries(struct ldap_search_params *sp,
struct map_source *sour
mapent_len = new_size;
} else {
char *estr;
- estr = strerror_r(errno, buf,
MAX_ERR_BUF);
+ estr = strerror_r(errno, buf,
sizeof(buf));
logerr(MODPREFIX "realloc: %s", estr);
}
}
@@ -2173,7 +2168,7 @@ static int read_one_map(struct autofs_point *ap,
sp.query = alloca(l);
if (sp.query == NULL) {
- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ char *estr = strerror_r(errno, buf, sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
return NSS_STATUS_UNAVAIL;
}
@@ -2327,7 +2322,7 @@ static int lookup_one(struct autofs_point *ap,
query = alloca(l);
if (query == NULL) {
- char *estr = strerror_r(errno, buf, MAX_ERR_BUF);
+ char *estr = strerror_r(errno, buf, sizeof(buf));
crit(ap->logopt, MODPREFIX "malloc: %s", estr);
if (enc_len1) {
free(enc_key1);
@@ -2499,7 +2494,7 @@ static int lookup_one(struct autofs_point *ap,
mapent = malloc(v_len + 1);
if (!mapent) {
char *estr;
- estr = strerror_r(errno, buf,
MAX_ERR_BUF);
+ estr = strerror_r(errno, buf,
sizeof(buf));
logerr(MODPREFIX "malloc: %s", estr);
ldap_value_free_len(bvValues);
goto next;
@@ -2519,7 +2514,7 @@ static int lookup_one(struct autofs_point *ap,
mapent_len = new_size;
} else {
char *estr;
- estr = strerror_r(errno, buf,
MAX_ERR_BUF);
+ estr = strerror_r(errno, buf,
sizeof(buf));
logerr(MODPREFIX "realloc: %s", estr);
}
}
--
1.6.0.4
_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs