On Fri, 2009-01-16 at 19:58 -0800, Valerie Aurora Henson wrote:
> Non-critical changes to make auditing buffer lengths easier.
> 
> * Some buffers were the wrong (too big) size, some were used twice for
>   different purposes.
> * Use sizeof(buf) instead of repeating the *MAX* define in functions
>   that need to know the size of a statically allocated buffer.
> * Fix a compiler warning about discarding the const on a string.

It's hard to see how any of this could cause any regressions (except for
that one snprintf below).

I'll import it into my StGIT patch list and run it through Connectathon.

> ---
>  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 6ba80eb..83e11a9 100644
> --- a/modules/lookup_ldap.c
> +++ b/modules/lookup_ldap.c
> @@ -274,7 +274,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;
> @@ -298,7 +298,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;
>       }
> @@ -1073,7 +1073,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;
>                       }
> @@ -1095,7 +1095,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;
>                       }
> @@ -1130,7 +1130,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;
>               }
> @@ -1171,7 +1171,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);
> @@ -1182,7 +1182,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);
> @@ -1196,7 +1196,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);
> @@ -1309,7 +1309,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;
>       }
> @@ -1410,8 +1410,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;
> @@ -1433,7 +1434,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;
>       }
> @@ -1523,18 +1524,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)) {

Think that has to be >=, as Jeff mentioned earlier.

>                       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);
> @@ -1552,7 +1547,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) {
> @@ -2051,7 +2046,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;
> @@ -2071,7 +2066,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);
>                               }
>                       }
> @@ -2172,7 +2167,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;
>       }
> @@ -2326,7 +2321,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);
> @@ -2498,7 +2493,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;
> @@ -2518,7 +2513,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);
>                               }
>                       }

_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to