[SpamCop doesn't seem to like my outgoing mail server, so I am sending
this from an alternate account]

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