Hello hello,

First off, is there a public CVS/SVN repository for autofs?

I grabbed the -rc1 tarball, figured I'd try building it with my usual devel 
CFLAGS, and... wow. This code's got _issues_, maaan....

See the attached omnibus patch. Commentary follows, in patch order (more or 
less). Of course, not all these changes need to go in as-is, but they 
should at least bring attention to some spots that could really use it.


(various files):

* Don't use "#if WITH_FOO", as this produces a warning if WITH_FOO is 
  undefined. Use "#ifdef".

daemon/automount.c:

* 'mc' is used many times as a local variable in this file; rename the 
  global instance to 'mrc' to avoid gratuitous shadowing

* 'mrc' (nee 'mc') is not needed outside of this file; declare as static

* Two fields in struct master_readmap_cond were not specified in the 
  initializer for 'mrc' (nee 'mc')

* 'sc' is used many times as a local variable in this file; rename the 
  global instance to 'suc' to avoid gratuitous shadowing

include/automount.h:

* Disable the OpenBSD syslog.h #include with a cpp conditional, not a 
  comment. This is a bit safer.

* The "extern struct master_readmap_cond mc" declaration is not used

include/lookup_ldap.h:

* Added appropriate WITH_KERBEROS and WITH_SASL cpp conditionals, to avoid 
  breakage when the respective libraries are not used.

  (Note: WITH_KERBEROS is a new conditional; support for it needs to be 
  added to the configure script)

* Comment the #endifs if the opening #ifdef is far away

include/state.h:

* Removed a superfluous comma

lib/cache.c:

* Eliminated "implicit cast to unsigned type" warnings

lib/cat_path.c:

* Tweaked the _strlen() function: Eliminated the unnecessary de-consting 
  cast, and rewrote the logic w.r.t. 'max' (this is unsigned, therefore the 
  max<0 check is pointless; it's not nice to modify your arguments; pointer 
  arithmetic sucks)
  
  P.S.: _strlen() should really have a return type of size_t, but I didn't 
  care enough to change this.

lib/master.c:

* Eliminated a stray semicolon

* Straightened out some unnecessary variable const-ness

lib/master_parse.y:

* #define YYENABLE_NLS and YYLTYPE_IS_TRIVIAL to zero; #ifdefs with these 
  appear in the generated code, and you get warnings if they are not 
  defined

lib/mounts.c:

* m_dev and m_ino are 'long unsigned int' values, so cast them to avoid 
  sscanf() format warnings

lib/nss_parse.y:

* Same deal with YYENABLE_NLS and YYLTYPE_IS_TRIVIAL

* Aaaarg! C++ comments in C code! Kill 'em! Kill 'em!

lib/rpc_subs.c:

* You don't want to use a local variable named 'h_errno'.

        fusion:/tmp$ grep h_errno /usr/include/netdb.h
           We use a macro to access always the thread-specific `h_errno' 
variable. */
        #define h_errno (*__h_errno_location ())
        ...

  (There were some places that used h_errno without declaring it locally. 
  I'm assuming that nowhere was this meant to refer to the global netdb.h 
  h_errno variable.)

modules/lookup_file.c:
modules/lookup_hosts.c

* What first caught my attention here was a warning that me->mapent is 
  being passed in as a format string to sprintf() without further arguments 
  (lots of fun if there's a "%s" in there somewhere), but that line and the 
  one before seemed a bit bizarrely written to me. (You call strlen() on a 
  string, then use sprintf() as an unsafe strcpy() replacement, and grab 
  the return value to get the length of that same string??) Replaced with 
  something more straightforward.

lookup_ldap.c:

* What the heck is '?:' supposed to return if the expression is true? (Not 
  valid C90, at any rate)

* My OpenLDAP 2.1.30 header does not define LDAP_SCOPE_ONE. It does,
  however, define LDAP_SCOPE_ONELEVEL.

* 'struct mapent me' is unused

* More mapent/mapent_len silliness

modules/mount_nfs.c:

* This looks like a bug to me. Does it look like a bug to you?

modules/replicated.c:

* You don't want to use a local variable named h_addr, either.

        fusion:/tmp$ grep h_addr /usr/include/netdb.h
          int h_addrtype;               /* Host address type.  */
          char **h_addr_list;           /* List of addresses from name server. 
*/
        #define h_addr  h_addr_list[0]  /* Address, for backward compatibility. 
*/


There's still a ton of warnings, mostly of variables shadowing other 
variables, but those affect code clarity more so than correctness.


--Daniel


-- 
NAME   = Daniel Richard G.       ##  Remember, skunks       _\|/_  meef?
EMAIL1 = [EMAIL PROTECTED]        ##  don't smell bad---    (/o|o\) /
EMAIL2 = [EMAIL PROTECTED]      ##  it's the people who   < (^),>
WWW    = http://www.******.org/  ##  annoy them that do!    /   \
--
(****** = site not yet online)
diff -ru autofs-5.0.1/daemon/automount.c autofs-5.0.1-patched/daemon/automount.c
--- autofs-5.0.1/daemon/automount.c     2006-07-13 04:11:38.000000000 -0400
+++ autofs-5.0.1-patched/daemon/automount.c     2006-07-13 15:10:28.000000000 
-0400
@@ -54,10 +54,10 @@
 /* Attribute to create detached thread */
 pthread_attr_t thread_attr;
 
-struct master_readmap_cond mc = {
-       PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, NULL, 0, 0};
+static struct master_readmap_cond mrc = {
+       PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, NULL, 0, 0, 0, 
0};
 
-struct startup_cond sc = {
+struct startup_cond suc = {
        PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0};
 
 pthread_key_t key_thread_stdenv_vars;
@@ -929,7 +929,7 @@
 {
        int status;
 
-       status = pthread_mutex_unlock(&mc.mutex);
+       status = pthread_mutex_unlock(&mrc.mutex);
        if (status)
                fatal(status);
 
@@ -944,26 +944,26 @@
 
        sig = *(int *) arg;
 
-       status = pthread_mutex_lock(&mc.mutex);
+       status = pthread_mutex_lock(&mrc.mutex);
        if (status)
                fatal(status);
 
-       master = mc.master;
+       master = mrc.master;
 
        debug(master->default_logging, "signal %d", sig);
 
-       mc.signaled = 1;
-       status = pthread_cond_signal(&mc.cond);
+       mrc.signaled = 1;
+       status = pthread_cond_signal(&mrc.cond);
        if (status) {
                error(master->default_logging,
                      "failed to signal state notify condition");
-               status = pthread_mutex_unlock(&mc.mutex);
+               status = pthread_mutex_unlock(&mrc.mutex);
                if (status)
                        fatal(status);
                pthread_exit(NULL);
        }
 
-       status = pthread_mutex_unlock(&mc.mutex);
+       status = pthread_mutex_unlock(&mrc.mutex);
        if (status)
                fatal(status);
 
@@ -978,7 +978,7 @@
        int sig = signal;
        int status;
 
-       status = pthread_mutex_lock(&mc.mutex);
+       status = pthread_mutex_lock(&mrc.mutex);
        if (status)
                fatal(status);
 
@@ -986,20 +986,20 @@
        if (status) {
                error(master->default_logging,
                      "mount state notify thread create failed");
-               status = pthread_mutex_unlock(&mc.mutex);
+               status = pthread_mutex_unlock(&mrc.mutex);
                if (status)
                        fatal(status);
                return 0;
        }
 
-       mc.thid = thid;
-       mc.master = master;
+       mrc.thid = thid;
+       mrc.master = master;
 
        pthread_cleanup_push(do_master_cleanup_unlock, NULL);
 
-       mc.signaled = 0;
-       while (!mc.signaled) {
-               status = pthread_cond_wait(&mc.cond, &mc.mutex);
+       mrc.signaled = 0;
+       while (!mrc.signaled) {
+               status = pthread_cond_wait(&mrc.cond, &mrc.mutex);
                if (status)
                        fatal(status);
        }
@@ -1016,25 +1016,25 @@
        int readall = 1;
        int status;
 
-       status = pthread_mutex_lock(&mc.mutex);
+       status = pthread_mutex_lock(&mrc.mutex);
        if (status)
                fatal(status);
 
-       master = mc.master;
-       age = mc.age;
+       master = mrc.master;
+       age = mrc.age;
 
-       mc.signaled = 1;
-       status = pthread_cond_signal(&mc.cond);
+       mrc.signaled = 1;
+       status = pthread_cond_signal(&mrc.cond);
        if (status) {
                error(master->default_logging,
                      "failed to signal master read map condition");
-               status = pthread_mutex_unlock(&mc.mutex);
+               status = pthread_mutex_unlock(&mrc.mutex);
                if (status)
                        fatal(status);
                pthread_exit(NULL);
        }
 
-       status = pthread_mutex_unlock(&mc.mutex);
+       status = pthread_mutex_unlock(&mrc.mutex);
        if (status)
                fatal(status);
 
@@ -1048,7 +1048,7 @@
        pthread_t thid;
        int status;
 
-       status = pthread_mutex_lock(&mc.mutex);
+       status = pthread_mutex_lock(&mrc.mutex);
        if (status)
                fatal(status);
 
@@ -1056,21 +1056,21 @@
        if (status) {
                error(master->default_logging,
                      "master read map thread create failed");
-               status = pthread_mutex_unlock(&mc.mutex);
+               status = pthread_mutex_unlock(&mrc.mutex);
                if (status)
                        fatal(status);
                return 0;
        }
 
-       mc.thid = thid;
-       mc.master = master;
-       mc.age = age;
+       mrc.thid = thid;
+       mrc.master = master;
+       mrc.age = age;
 
        pthread_cleanup_push(do_master_cleanup_unlock, NULL);
 
-       mc.signaled = 0;
-       while (!mc.signaled) {
-               status = pthread_cond_wait(&mc.cond, &mc.mutex);
+       mrc.signaled = 0;
+       while (!mrc.signaled) {
+               status = pthread_cond_wait(&mrc.cond, &mrc.mutex);
                if (status)
                        fatal(status);
        }
@@ -1236,14 +1236,14 @@
 
        ap = (struct autofs_point *) arg;
 
-       pthread_cleanup_push(return_start_status, &sc);
+       pthread_cleanup_push(return_start_status, &suc);
        pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cancel_state);
 
        status = pthread_mutex_lock(&ap->state_mutex);
        if (status)
                fatal(status);
 
-       status = pthread_mutex_lock(&sc.mutex);
+       status = pthread_mutex_lock(&suc.mutex);
        if (status) {
                crit(ap->logopt, "failed to lock startup condition mutex!");
                fatal(status);
@@ -1251,7 +1251,7 @@
 
        if (mount_autofs(ap) < 0) {
                crit(ap->logopt, "mount of %s failed!", ap->path);
-               sc.status = 1;
+               suc.status = 1;
                status = pthread_mutex_unlock(&ap->state_mutex);
                if (status)
                        fatal(status);
@@ -1262,7 +1262,7 @@
        if (ap->ghost && ap->type != LKP_DIRECT)
                msg("ghosting enabled");
 
-       sc.status = 0;
+       suc.status = 0;
        pthread_cleanup_pop(1);
 
        /* We often start several automounters at the same time.  Add some
diff -ru autofs-5.0.1/include/automount.h 
autofs-5.0.1-patched/include/automount.h
--- autofs-5.0.1/include/automount.h    2006-07-13 04:11:38.000000000 -0400
+++ autofs-5.0.1-patched/include/automount.h    2006-07-13 15:31:34.000000000 
-0400
@@ -30,13 +30,14 @@
 #include "log.h"
 #include "rpc_subs.h"
 
-#if WITH_DMALLOC
+#ifdef WITH_DMALLOC
 #include <dmalloc.h>
 #endif
 
-/* OpenBSD re-entrant syslog
+/* OpenBSD re-entrant syslog */
+#if 0
 #include "syslog.h"
-*/
+#endif
 
 #define ENABLE_CORES   1
 
@@ -379,8 +380,6 @@
        unsigned int busy;       /* Map read in progress. */
 };
 
-extern struct master_readmap_cond mc;
-
 struct pending_args {
        pthread_mutex_t mutex;
        pthread_cond_t  cond;
diff -ru autofs-5.0.1/include/lookup_ldap.h 
autofs-5.0.1-patched/include/lookup_ldap.h
--- autofs-5.0.1/include/lookup_ldap.h  2006-07-13 04:11:38.000000000 -0400
+++ autofs-5.0.1-patched/include/lookup_ldap.h  2006-07-13 12:50:30.000000000 
-0400
@@ -1,7 +1,7 @@
 #ifndef LOOKUP_LDAP_H
 #define LOOKUP_LDAP_H
 
-#if WITH_SASL
+#ifdef WITH_SASL
 #include <openssl/ssl.h>
 #include <openssl/evp.h>
 #include <openssl/err.h>
@@ -37,17 +37,21 @@
        char        *client_princ;
        int          kinit_done;
        int          kinit_successful;
+#ifdef WITH_KERBEROS
        krb5_principal  krb5_client_princ;
        krb5_context krb5ctxt;
        krb5_ccache  krb5_ccache;
+#endif
+#ifdef WITH_SASL
        sasl_conn_t  *sasl_conn;
+#endif
        /* keytab file name needs to be added */
 
        struct parse_mod *parse;
 };
 
 
-#if WITH_SASL
+#ifdef WITH_SASL
 #define LDAP_AUTH_CONF_FILE "test"
 
 #define LDAP_TLS_DONT_USE      0
@@ -68,6 +72,6 @@
 int autofs_sasl_init(LDAP *ldap, struct lookup_context *ctxt);
 int autofs_sasl_bind(LDAP *ldap, struct lookup_context *ctxt);
 void autofs_sasl_unbind(struct lookup_context *ctxt);
-#endif
+#endif /* WITH_SASL */
 
 #endif /* _lookup_ldap_h */
diff -ru autofs-5.0.1/include/state.h autofs-5.0.1-patched/include/state.h
--- autofs-5.0.1/include/state.h        2006-07-13 04:11:38.000000000 -0400
+++ autofs-5.0.1-patched/include/state.h        2006-07-13 13:24:30.000000000 
-0400
@@ -47,7 +47,7 @@
        ST_READMAP,
        ST_SHUTDOWN_PENDING,
        ST_SHUTDOWN_FORCE,
-       ST_SHUTDOWN,
+       ST_SHUTDOWN
 };
 
 struct expire_args {
diff -ru autofs-5.0.1/lib/cache.c autofs-5.0.1-patched/lib/cache.c
--- autofs-5.0.1/lib/cache.c    2006-07-13 04:11:38.000000000 -0400
+++ autofs-5.0.1-patched/lib/cache.c    2006-07-13 14:25:17.000000000 -0400
@@ -414,8 +414,8 @@
        INIT_LIST_HEAD(&me->multi_list);
        me->multi = NULL;
        me->ioctlfd = -1;
-       me->dev = -1;
-       me->ino = -1;
+       me->dev = (dev_t)-1;
+       me->ino = (ino_t)-1;
 
        /* 
         * We need to add to the end if values exist in order to
diff -ru autofs-5.0.1/lib/cat_path.c autofs-5.0.1-patched/lib/cat_path.c
--- autofs-5.0.1/lib/cat_path.c 2006-07-13 04:11:38.000000000 -0400
+++ autofs-5.0.1-patched/lib/cat_path.c 2006-07-13 15:15:14.000000000 -0400
@@ -60,14 +60,13 @@
 
 int _strlen(const char *str, size_t max)
 {
-       char *s = (char *) str;
+       const char *s = str;
+       size_t len = 0;
 
-       while (*s++ && max--) ;
+       while (*s++ && len < max)
+               len++;
 
-       if (max < 0)
-               return 0;
-       
-       return s - str - 1;
+       return (int) len;
 }
 
 /* 
diff -ru autofs-5.0.1/lib/master.c autofs-5.0.1-patched/lib/master.c
--- autofs-5.0.1/lib/master.c   2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/lib/master.c   2006-07-13 15:16:45.000000000 -0400
@@ -34,7 +34,7 @@
 /* Attribute to create detached thread */
 extern pthread_attr_t thread_attr;
 
-extern struct startup_cond sc;
+extern struct startup_cond suc;
 
 static struct map_source *
 __master_find_map_source(struct master_mapent *,
@@ -361,7 +361,7 @@
 struct map_source *master_find_source_instance(struct map_source *source, 
const char *type, const char *format, int argc, const char **argv)
 {
        struct map_source *map;
-       struct map_source *instance = NULL;;
+       struct map_source *instance = NULL;
        int status, res;
 
        status = pthread_mutex_lock(&instance_mutex);
@@ -657,14 +657,14 @@
 struct master *master_new(const char *name, unsigned int timeout, unsigned int 
ghost)
 {
        struct master *master;
-       const char *tmp;
+       char *tmp;
 
        master = malloc(sizeof(struct master));
        if (!master)
                return NULL;
 
        if (!name)
-               tmp = defaults_get_master_map();
+               tmp = (char *) defaults_get_master_map();
        else
                tmp = strdup(name);
 
@@ -838,12 +838,12 @@
        pthread_t thid;
        int status;
 
-       status = pthread_mutex_lock(&sc.mutex);
+       status = pthread_mutex_lock(&suc.mutex);
        if (status)
                fatal(status);
 
-       sc.done = 0;
-       sc.status = 0;
+       suc.done = 0;
+       suc.status = 0;
 
        ap = entry->ap;
 
@@ -853,28 +853,28 @@
                crit(ap->logopt,
                     "failed to create mount handler thread for %s",
                     entry->path);
-               status = pthread_mutex_unlock(&sc.mutex);
+               status = pthread_mutex_unlock(&suc.mutex);
                if (status)
                        fatal(status);
                return 0;
        }
        entry->thid = thid;
 
-       while (!sc.done) {
-               status = pthread_cond_wait(&sc.cond, &sc.mutex);
+       while (!suc.done) {
+               status = pthread_cond_wait(&suc.cond, &suc.mutex);
                if (status)
                        fatal(status);
        }
 
-       if (sc.status) {
+       if (suc.status) {
                error(ap->logopt, "failed to startup mount");
-               status = pthread_mutex_unlock(&sc.mutex);
+               status = pthread_mutex_unlock(&suc.mutex);
                if (status)
                        fatal(status);
                return 0;
        }
 
-       status = pthread_mutex_unlock(&sc.mutex);
+       status = pthread_mutex_unlock(&suc.mutex);
        if (status)
                fatal(status);
 
diff -ru autofs-5.0.1/lib/master_parse.y autofs-5.0.1-patched/lib/master_parse.y
--- autofs-5.0.1/lib/master_parse.y     2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/lib/master_parse.y     2006-07-13 12:57:45.000000000 
-0400
@@ -62,6 +62,8 @@
 static int lineno;
 
 #define YYDEBUG 0
+#define YYENABLE_NLS 0
+#define YYLTYPE_IS_TRIVIAL 0
 
 #if YYDEBUG
 static int master_fprintf(FILE *, char *, ...);
diff -ru autofs-5.0.1/lib/mounts.c autofs-5.0.1-patched/lib/mounts.c
--- autofs-5.0.1/lib/mounts.c   2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/lib/mounts.c   2006-07-13 14:42:26.000000000 -0400
@@ -357,14 +357,14 @@
                p_dev = strstr(mnt->mnt_opts, "dev=");
                if (!p_dev)
                        continue;
-               sscanf(p_dev, "dev=%ld", &m_dev);
+               sscanf(p_dev, "dev=%ld", (long int *) &m_dev);
                if (m_dev != l_dev)
                        continue;
 
                p_ino = strstr(mnt->mnt_opts, "ino=");
                if (!p_ino)
                        continue;
-               sscanf(p_ino, "ino=%ld", &m_ino);
+               sscanf(p_ino, "ino=%ld", (long int *) &m_ino);
                if (m_ino == l_ino) {
                        path = strdup(mnt->mnt_dir);
                        break;
diff -ru autofs-5.0.1/lib/nss_parse.y autofs-5.0.1-patched/lib/nss_parse.y
--- autofs-5.0.1/lib/nss_parse.y        2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/lib/nss_parse.y        2006-07-13 15:19:46.000000000 
-0400
@@ -36,6 +36,8 @@
 struct nss_action act[NSS_STATUS_MAX];
 
 #define YYDEBUG 0
+#define YYENABLE_NLS 0
+#define YYLTYPE_IS_TRIVIAL 0
 
 extern int nss_lineno;
 extern int nss_lex(void);
@@ -72,13 +74,13 @@
 
 nss_source: SOURCE
 {
-//     printf("source: %s\n", $1);
+/*     printf("source: %s\n", $1); */
        src = add_source(nss_list, $1);
 } | SOURCE LBRACKET status_exp_list RBRACKET
 {
        enum nsswitch_status a;
 
-//     printf("source: %s\n", $1);
+/*     printf("source: %s\n", $1); */
        src = add_source(nss_list, $1);
        for (a = 0; a < NSS_STATUS_MAX; a++) {
                if (act[a].action != NSS_ACTION_UNKNOWN) {
@@ -98,11 +100,11 @@
 
 status_exp: STATUS EQUAL ACTION
 {
-//     printf("action: [ %s=%s ]\n", $1, $3);
+/*     printf("action: [ %s=%s ]\n", $1, $3); */
        set_action(act, $1, $3, 0);
 } | BANG STATUS EQUAL ACTION
 {
-//     printf("action: [ ! %s=%s ]\n", $2, $4);
+/*     printf("action: [ ! %s=%s ]\n", $2, $4); */
        set_action(act, $2, $4, 1);
 } | STATUS EQUAL OTHER {nss_error($3); YYABORT; }
   | STATUS OTHER {nss_error($2); YYABORT; }
diff -ru autofs-5.0.1/lib/rpc_subs.c autofs-5.0.1-patched/lib/rpc_subs.c
--- autofs-5.0.1/lib/rpc_subs.c 2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/lib/rpc_subs.c 2006-07-13 14:48:49.000000000 -0400
@@ -46,7 +46,7 @@
  */
 static CLIENT *create_udp_client(struct conn_info *info)
 {
-       int fd, ret, h_errno;
+       int fd, ret, h_err;
        CLIENT *client;
        struct sockaddr_in laddr, raddr;
        struct hostent hp;
@@ -78,9 +78,9 @@
        memset(&hp, 0, sizeof(struct hostent));
 
        ret = gethostbyname_r(info->host, php,
-                       buf, HOST_ENT_BUF_SIZE, &result, &h_errno);
+                       buf, HOST_ENT_BUF_SIZE, &result, &h_err);
        if (ret || !result) {
-               int err = h_errno == -1 ? errno : h_errno;
+               int err = h_err == -1 ? errno : h_err;
                char *estr = strerror_r(err, buf, HOST_ENT_BUF_SIZE);
                error(LOGOPT_ANY, "hostname lookup failed: %s", estr);
                return NULL;
@@ -241,7 +241,7 @@
        struct hostent *php = &hp;
        struct hostent *result;
        char buf[HOST_ENT_BUF_SIZE];
-       int ret;
+       int h_err, ret;
 
        if (info->proto->p_proto != IPPROTO_TCP)
                return NULL;
@@ -266,9 +266,9 @@
        memset(&hp, 0, sizeof(struct hostent));
 
        ret = gethostbyname_r(info->host, php,
-                       buf, HOST_ENT_BUF_SIZE, &result, &h_errno);
+                       buf, HOST_ENT_BUF_SIZE, &result, &h_err);
        if (ret || !result) {
-               int err = h_errno == -1 ? errno : h_errno;
+               int err = h_err == -1 ? errno : h_err;
                char *estr =  strerror_r(err, buf, HOST_ENT_BUF_SIZE);
                error(LOGOPT_ANY, "hostname lookup failed: %s", estr);
                return NULL;
@@ -720,13 +720,13 @@
        struct hostent *result;
        char buf[HOST_ENT_BUF_SIZE], **haddr;
        struct sockaddr_in saddr, maddr;
-       int h_errno, ret;
+       int h_err, ret;
 
        memset(buf, 0, HOST_ENT_BUF_SIZE);
        memset(&he, 0, sizeof(struct hostent));
 
        ret = gethostbyname_r(myname, phe,
-                       buf, HOST_ENT_BUF_SIZE, &result, &h_errno);
+                       buf, HOST_ENT_BUF_SIZE, &result, &h_err);
        if (ret || !result)
                return 0;
 
@@ -739,7 +739,7 @@
                if (!ret)
                        return 0;
        } else {
-               uint32_t m = -1;
+               uint32_t m = (uint32_t)-1;
                int msize = atoi(mask);
 
                m = m << (32 - msize);
@@ -836,13 +836,13 @@
        struct hostent *phe = &he;
        struct hostent *result;
        char buf[HOST_ENT_BUF_SIZE];
-       int ret;
+       int h_err, ret;
 
        memset(buf, 0, HOST_ENT_BUF_SIZE);
        memset(&he, 0, sizeof(struct hostent));
 
        ret = gethostbyname_r(myname, phe,
-                       buf, HOST_ENT_BUF_SIZE, &result, &h_errno);
+                       buf, HOST_ENT_BUF_SIZE, &result, &h_err);
        if (ret || !result)
                return 0;
 
diff -ru autofs-5.0.1/modules/lookup_file.c 
autofs-5.0.1-patched/modules/lookup_file.c
--- autofs-5.0.1/modules/lookup_file.c  2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/modules/lookup_file.c  2006-07-13 14:36:41.000000000 
-0400
@@ -942,8 +942,9 @@
        me = cache_lookup(mc, key);
        if (me) {
                pthread_cleanup_push(cache_lock_cleanup, mc);
-               mapent = alloca(strlen(me->mapent) + 1);
-               mapent_len = sprintf(mapent, me->mapent);
+               mapent_len = strlen(me->mapent);
+               mapent = alloca(mapent_len + 1);
+               strcpy(mapent, me->mapent);
                pthread_cleanup_pop(0);
                mapent[mapent_len] = '\0';
        }
diff -ru autofs-5.0.1/modules/lookup_hosts.c 
autofs-5.0.1-patched/modules/lookup_hosts.c
--- autofs-5.0.1/modules/lookup_hosts.c 2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/modules/lookup_hosts.c 2006-07-13 14:37:31.000000000 
-0400
@@ -157,8 +157,9 @@
         */
        if (*name == '/') {
                pthread_cleanup_push(cache_lock_cleanup, mc);
-               mapent = alloca(strlen(me->mapent) + 1);
-               mapent_len = sprintf(mapent, me->mapent);
+               mapent_len = strlen(me->mapent);
+               mapent = alloca(mapent_len + 1);
+               strcpy(mapent, me->mapent);
                pthread_cleanup_pop(0);
                mapent[mapent_len] = '\0';
        }
diff -ru autofs-5.0.1/modules/lookup_ldap.c 
autofs-5.0.1-patched/modules/lookup_ldap.c
--- autofs-5.0.1/modules/lookup_ldap.c  2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/modules/lookup_ldap.c  2006-07-13 15:18:52.000000000 
-0400
@@ -55,7 +55,7 @@
        if (rv != LDAP_SUCCESS) {
                crit(LOGOPT_ANY,
                     MODPREFIX "Unable to bind to the LDAP server: "
-                    "%s, error %s", ctxt->server ?: "(default)",
+                    "%s, error %s", ctxt->server ? "" : "(default)",
                     ldap_err2string(rv));
                return -1;
        }
@@ -67,7 +67,7 @@
 {
        int rv;
 
-#if WITH_SASL
+#ifdef WITH_SASL
        debug(LOGOPT_NONE, "use_tls: %d", ctxt->use_tls);
        /*
         * The OpenSSL library can't handle having its message and error
@@ -82,7 +82,7 @@
                ctxt->use_tls = LDAP_TLS_INIT;
        }
        autofs_sasl_unbind(ctxt);
-#endif
+#endif /* WITH_SASL */
 
        rv = ldap_unbind_ext(ldap, NULL, NULL);
        if (rv != LDAP_SUCCESS)
@@ -135,7 +135,7 @@
                     MODPREFIX "failed to set connection timeout to %d",
                     timeout);
 
-#if WITH_SASL
+#ifdef WITH_SASL
        if (ctxt->use_tls) {
                if (ctxt->version == 2) {
                        if (ctxt->tls_required) {
@@ -166,7 +166,7 @@
                }
                ctxt->use_tls = LDAP_TLS_RELEASE;
        }
-#endif
+#endif /* WITH_SASL */
 
        return ldap;
 }
@@ -180,7 +180,7 @@
        if (!ldap)
                return NULL;
 
-#if WITH_SASL
+#ifdef WITH_SASL
        debug(LOGOPT_NONE, "auth_required: %d, sasl_mech %s",
              ctxt->auth_required, ctxt->sasl_mech);
 
@@ -194,10 +194,10 @@
                debug(LOGOPT_NONE,
                      MODPREFIX "ldap anonymous bind returned %d", rv);
        }
-#else
+#else /* not WITH_SASL */
        rv = bind_ldap_anonymous(ldap, ctxt);
        debug(LOGOPT_NONE, MODPREFIX "ldap anonymous bind returned %d", rv);
-#endif
+#endif /* not WITH_SASL */
 
        if (rv != 0) {
                unbind_ldap_connection(ldap, ctxt);
@@ -207,7 +207,7 @@
        return ldap;
 }
 
-#if WITH_SASL
+#ifdef WITH_SASL
 int get_property(xmlNodePtr node, const char *prop, char **value)
 {
        xmlChar *ret;
@@ -544,7 +544,7 @@
 
        return 0;
 }
-#endif
+#endif /* WITH_SASL */
 
 /*
  *  Take an input string as specified in the master map, and break it
@@ -802,7 +802,7 @@
                              MODPREFIX "error forming query string");
                        return 0;
                }
-               scope = LDAP_SCOPE_ONE;
+               scope = LDAP_SCOPE_ONELEVEL;
        } else {
                if (sprintf(query, "(objectclass=%s)", class) >= l) {
                        debug(LOGOPT_NONE,
@@ -883,7 +883,7 @@
                return 1;
        }
 
-#if WITH_SASL
+#ifdef WITH_SASL
        /*
         * Determine which authentication mechanism to use.  We sanity-
         * check by binding to the server temporarily.
@@ -895,7 +895,7 @@
                free_context(ctxt);
                return 1;
        }
-#endif
+#endif /* WITH_SASL */
 
        ldap = do_connect(ctxt);
        if (!ldap) {
@@ -1281,7 +1281,6 @@
 {
        struct map_source *source = ap->entry->current;
        struct mapent_cache *mc = source->mc;
-       struct mapent me;
        int rv, i, l, ql, count;
        char buf[MAX_ERR_BUF];
        time_t age = time(NULL);
@@ -1590,9 +1589,9 @@
        me = cache_lookup(mc, key);
        if (me) {
                pthread_cleanup_push(cache_lock_cleanup, mc);
-               mapent = alloca(strlen(me->mapent) + 1);
-               mapent_len = sprintf(mapent, me->mapent);
-               mapent[mapent_len] = '\0';
+               mapent_len = strlen(me->mapent);
+               mapent = alloca(mapent_len + 1);
+               strcpy(mapent, me->mapent);
                pthread_cleanup_pop(0);
        }
        cache_unlock(mc);
@@ -1633,7 +1632,7 @@
 {
        struct lookup_context *ctxt = (struct lookup_context *) context;
        int rv = close_parse(ctxt->parse);
-#if WITH_SASL
+#ifdef WITH_SASL
        EVP_cleanup();
        ERR_free_strings();
 
diff -ru autofs-5.0.1/modules/mount_nfs.c 
autofs-5.0.1-patched/modules/mount_nfs.c
--- autofs-5.0.1/modules/mount_nfs.c    2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/modules/mount_nfs.c    2006-07-13 15:11:11.000000000 
-0400
@@ -47,7 +47,7 @@
 {
        /* Make sure we have the local mount method available */
        if (!mount_bind) {
-               if ((mount_bind = open_mount("bind", MODPREFIX)));
+               if ((mount_bind = open_mount("bind", MODPREFIX)))
                        init_ctr++;
        } else
                init_ctr++;
diff -ru autofs-5.0.1/modules/replicated.c 
autofs-5.0.1-patched/modules/replicated.c
--- autofs-5.0.1/modules/replicated.c   2006-07-13 04:11:39.000000000 -0400
+++ autofs-5.0.1-patched/modules/replicated.c   2006-07-13 15:27:05.000000000 
-0400
@@ -75,7 +75,7 @@
 static unsigned int get_proximity(const char *host_addr, int addr_len)
 {
        struct sockaddr_in *msk_addr, *if_addr;
-       struct in_addr *h_addr;
+       struct in_addr *hx_addr;
        char tmp[20], buf[MAX_ERR_BUF], *estr, *ptr;
        struct ifconf ifc;
        struct ifreq *ifr, nmptr;
@@ -83,9 +83,9 @@
        uint32_t mask, ha, ia;
 
        memcpy(tmp, host_addr, addr_len);
-       h_addr = (struct in_addr *) tmp;
+       hx_addr = (struct in_addr *) tmp;
 
-       ha = ntohl((uint32_t) h_addr->s_addr);
+       ha = ntohl((uint32_t) hx_addr->s_addr);
 
        sock = socket(AF_INET, SOCK_DGRAM, 0);
        if (sock < 0) {
@@ -116,7 +116,7 @@
                switch (ifr->ifr_addr.sa_family) {
                case AF_INET:
                        if_addr = (struct sockaddr_in *) &ifr->ifr_addr;
-                       ret = memcmp(&if_addr->sin_addr, h_addr, addr_len);
+                       ret = memcmp(&if_addr->sin_addr, hx_addr, addr_len);
                        if (!ret) {
                                close(sock);
                                return PROXIMITY_LOCAL;
@@ -696,7 +696,7 @@
        struct hostent *result;
        struct sockaddr_in saddr;
        char buf[MAX_IFC_BUF], **haddr;
-       int h_errno, ret;
+       int h_err, ret;
        struct host *new;
        unsigned int prx;
 
@@ -721,14 +721,14 @@
        memset(&he, 0, sizeof(struct hostent));
 
        ret = gethostbyname_r(host, phe,
-                       buf, MAX_IFC_BUF, &result, &h_errno);
+                       buf, MAX_IFC_BUF, &result, &h_err);
        if (ret || !result) {
-               if (h_errno == -1)
+               if (h_err == -1)
                        error(LOGOPT_ANY,
                              "host %s: lookup failure %d", host, errno);
                else
                        error(LOGOPT_ANY,
-                             "host %s: lookup failure %d", host, h_errno);
+                             "host %s: lookup failure %d", host, h_err);
                return 0;
        }
 
_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to