|
Ian Kent |
a3a09e |
autofs-5.0.5 - more code analysis corrections (and fix a typo in an init script)
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
From: Jeff Moyer <jmoyer@redhat.com>
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
- fix an obvious type in Redhat init script.
|
|
Ian Kent |
a3a09e |
- don't call ldap_msgfree when result pointer is null.
|
|
Ian Kent |
a3a09e |
- check return of ldap_parse_result as pointers will be invalid on fail.
|
|
Ian Kent |
a3a09e |
- get rid of a bogus assignment in defaults_free_searchdns.
|
|
Ian Kent |
a3a09e |
- get rid of unused optlen variable in parse_sun.c.
|
|
Ian Kent |
a3a09e |
- check return status of stat(2) in do_mount_direct().
|
|
Ian Kent |
a3a09e |
- get rid of unused name variable in master_add_map_source().
|
|
Ian Kent |
a3a09e |
- check return from ops->askumount() in expire_cleanup().
|
|
Ian Kent |
a3a09e |
- in mount_autofs.c:mount_mount(), don't increment val since we never
|
|
Ian Kent |
a3a09e |
look at it again.
|
|
Ian Kent |
a3a09e |
- in autofs_sasl_dispose() ctxt must always be valid or we would have
|
|
Ian Kent |
a3a09e |
a much bigger problem.
|
|
Ian Kent |
a3a09e |
- in st_start_handler() and alarm_start_handler() it is possible for
|
|
Ian Kent |
a3a09e |
pthread_attr_destroy() to be called with a NULL pointer.
|
|
Ian Kent |
a3a09e |
- we could end up with a non-null result pointer after a failed call to
|
|
Ian Kent |
a3a09e |
ldap_search_s(), well maybe, so check for it anyway.
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
|
|
Ian Kent |
a3a09e |
---
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
CHANGELOG | 1 +
|
|
Ian Kent |
a3a09e |
daemon/direct.c | 2 +-
|
|
Ian Kent |
a3a09e |
daemon/state.c | 5 +++--
|
|
Ian Kent |
a3a09e |
lib/alarm.c | 3 ++-
|
|
Ian Kent |
a3a09e |
lib/defaults.c | 1 -
|
|
Ian Kent |
a3a09e |
lib/master.c | 6 +-----
|
|
Ian Kent |
a3a09e |
modules/cyrus-sasl.c | 2 +-
|
|
Ian Kent |
a3a09e |
modules/lookup_ldap.c | 13 +++++++++++--
|
|
Ian Kent |
a3a09e |
modules/mount_autofs.c | 2 +-
|
|
Ian Kent |
a3a09e |
modules/parse_sun.c | 3 +--
|
|
Ian Kent |
a3a09e |
redhat/autofs.init.in | 2 +-
|
|
Ian Kent |
a3a09e |
11 files changed, 23 insertions(+), 17 deletions(-)
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
diff --git a/CHANGELOG b/CHANGELOG
|
|
Ian Kent |
a3a09e |
index 23351c8..b9b1602 100644
|
|
Ian Kent |
a3a09e |
--- a/CHANGELOG
|
|
Ian Kent |
a3a09e |
+++ b/CHANGELOG
|
|
Ian Kent |
a3a09e |
@@ -5,6 +5,7 @@
|
|
Ian Kent |
a3a09e |
- add mount wait timeout parameter.
|
|
Ian Kent |
a3a09e |
- special case cifs escapes.
|
|
Ian Kent |
a3a09e |
- fix compile fail with when LDAP is excluded.
|
|
Ian Kent |
a3a09e |
+- more code analysis corrections (and fix a typo in an init script).
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
03/09/2009 autofs-5.0.5
|
|
Ian Kent |
a3a09e |
-----------------------
|
|
Ian Kent |
a3a09e |
diff --git a/daemon/direct.c b/daemon/direct.c
|
|
Ian Kent |
a3a09e |
index 0c78627..9b4e57b 100644
|
|
Ian Kent |
a3a09e |
--- a/daemon/direct.c
|
|
Ian Kent |
a3a09e |
+++ b/daemon/direct.c
|
|
Ian Kent |
a3a09e |
@@ -1245,7 +1245,7 @@ static void *do_mount_direct(void *arg)
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
status = stat(mt.name, &st);
|
|
Ian Kent |
a3a09e |
- if (!S_ISDIR(st.st_mode) || st.st_dev != mt.dev) {
|
|
Ian Kent |
a3a09e |
+ if (status != 0 || !S_ISDIR(st.st_mode) || st.st_dev != mt.dev) {
|
|
Ian Kent |
a3a09e |
error(ap->logopt,
|
|
Ian Kent |
a3a09e |
"direct trigger not valid or already mounted %s",
|
|
Ian Kent |
a3a09e |
mt.name);
|
|
Ian Kent |
a3a09e |
diff --git a/daemon/state.c b/daemon/state.c
|
|
Ian Kent |
a3a09e |
index 71af46a..27bc6de 100644
|
|
Ian Kent |
a3a09e |
--- a/daemon/state.c
|
|
Ian Kent |
a3a09e |
+++ b/daemon/state.c
|
|
Ian Kent |
a3a09e |
@@ -160,7 +160,7 @@ void expire_cleanup(void *arg)
|
|
Ian Kent |
a3a09e |
* been signaled to shutdown.
|
|
Ian Kent |
a3a09e |
*/
|
|
Ian Kent |
a3a09e |
rv = ops->askumount(ap->logopt, ap->ioctlfd, &idle);
|
|
Ian Kent |
a3a09e |
- if (!idle && !ap->shutdown) {
|
|
Ian Kent |
a3a09e |
+ if (!rv && !idle && !ap->shutdown) {
|
|
Ian Kent |
a3a09e |
next = ST_READY;
|
|
Ian Kent |
a3a09e |
if (!ap->submount)
|
|
Ian Kent |
a3a09e |
alarm_add(ap, ap->exp_runfreq);
|
|
Ian Kent |
a3a09e |
@@ -1198,7 +1198,8 @@ int st_start_handler(void)
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
status = pthread_create(&thid, pattrs, st_queue_handler, NULL);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
- pthread_attr_destroy(pattrs);
|
|
Ian Kent |
a3a09e |
+ if (pattrs)
|
|
Ian Kent |
a3a09e |
+ pthread_attr_destroy(pattrs);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
return !status;
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
diff --git a/lib/alarm.c b/lib/alarm.c
|
|
Ian Kent |
a3a09e |
index 46df38a..f403d8f 100755
|
|
Ian Kent |
a3a09e |
--- a/lib/alarm.c
|
|
Ian Kent |
a3a09e |
+++ b/lib/alarm.c
|
|
Ian Kent |
a3a09e |
@@ -239,7 +239,8 @@ int alarm_start_handler(void)
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
status = pthread_create(&thid, pattrs, alarm_handler, NULL);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
- pthread_attr_destroy(pattrs);
|
|
Ian Kent |
a3a09e |
+ if (pattrs)
|
|
Ian Kent |
a3a09e |
+ pthread_attr_destroy(pattrs);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
return !status;
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
diff --git a/lib/defaults.c b/lib/defaults.c
|
|
Ian Kent |
a3a09e |
index 2204b18..cb8354d 100644
|
|
Ian Kent |
a3a09e |
--- a/lib/defaults.c
|
|
Ian Kent |
a3a09e |
+++ b/lib/defaults.c
|
|
Ian Kent |
a3a09e |
@@ -534,7 +534,6 @@ void defaults_free_searchdns(struct ldap_searchdn *sdn)
|
|
Ian Kent |
a3a09e |
struct ldap_searchdn *this = sdn;
|
|
Ian Kent |
a3a09e |
struct ldap_searchdn *next;
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
- next = this;
|
|
Ian Kent |
a3a09e |
while (this) {
|
|
Ian Kent |
a3a09e |
next = this->next;
|
|
Ian Kent |
a3a09e |
free(this->basedn);
|
|
Ian Kent |
a3a09e |
diff --git a/lib/master.c b/lib/master.c
|
|
Ian Kent |
a3a09e |
index e43f835..8455f40 100644
|
|
Ian Kent |
a3a09e |
--- a/lib/master.c
|
|
Ian Kent |
a3a09e |
+++ b/lib/master.c
|
|
Ian Kent |
a3a09e |
@@ -152,7 +152,7 @@ master_add_map_source(struct master_mapent *entry,
|
|
Ian Kent |
a3a09e |
{
|
|
Ian Kent |
a3a09e |
struct map_source *source;
|
|
Ian Kent |
a3a09e |
char *ntype, *nformat;
|
|
Ian Kent |
a3a09e |
- const char **tmpargv, *name = NULL;
|
|
Ian Kent |
a3a09e |
+ const char **tmpargv;
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
source = malloc(sizeof(struct map_source));
|
|
Ian Kent |
a3a09e |
if (!source)
|
|
Ian Kent |
a3a09e |
@@ -188,10 +188,6 @@ master_add_map_source(struct master_mapent *entry,
|
|
Ian Kent |
a3a09e |
source->argc = argc;
|
|
Ian Kent |
a3a09e |
source->argv = tmpargv;
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
- /* Can be NULL for "hosts" map */
|
|
Ian Kent |
a3a09e |
- if (argv)
|
|
Ian Kent |
a3a09e |
- name = argv[0];
|
|
Ian Kent |
a3a09e |
-
|
|
Ian Kent |
a3a09e |
master_source_writelock(entry);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
if (!entry->maps)
|
|
Ian Kent |
a3a09e |
diff --git a/modules/cyrus-sasl.c b/modules/cyrus-sasl.c
|
|
Ian Kent |
a3a09e |
index 828143e..92e2226 100644
|
|
Ian Kent |
a3a09e |
--- a/modules/cyrus-sasl.c
|
|
Ian Kent |
a3a09e |
+++ b/modules/cyrus-sasl.c
|
|
Ian Kent |
a3a09e |
@@ -911,7 +911,7 @@ void autofs_sasl_dispose(struct lookup_context *ctxt)
|
|
Ian Kent |
a3a09e |
{
|
|
Ian Kent |
a3a09e |
int status, ret;
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
- if (ctxt && ctxt->sasl_conn) {
|
|
Ian Kent |
a3a09e |
+ if (ctxt->sasl_conn) {
|
|
Ian Kent |
a3a09e |
sasl_dispose(&ctxt->sasl_conn);
|
|
Ian Kent |
a3a09e |
ctxt->sasl_conn = NULL;
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c
|
|
Ian Kent |
a3a09e |
index f1fb9ce..d8bd169 100644
|
|
Ian Kent |
a3a09e |
--- a/modules/lookup_ldap.c
|
|
Ian Kent |
a3a09e |
+++ b/modules/lookup_ldap.c
|
|
Ian Kent |
a3a09e |
@@ -389,13 +389,16 @@ static int get_query_dn(unsigned logopt, LDAP *ldap, struct lookup_context *ctxt
|
|
Ian Kent |
a3a09e |
error(logopt,
|
|
Ian Kent |
a3a09e |
MODPREFIX "query failed for search dn %s: %s",
|
|
Ian Kent |
a3a09e |
this->basedn, ldap_err2string(rv));
|
|
Ian Kent |
a3a09e |
+ if (result) {
|
|
Ian Kent |
a3a09e |
+ ldap_msgfree(result);
|
|
Ian Kent |
a3a09e |
+ result = NULL;
|
|
Ian Kent |
a3a09e |
+ }
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
this = this->next;
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
if (!result) {
|
|
Ian Kent |
a3a09e |
- ldap_msgfree(result);
|
|
Ian Kent |
a3a09e |
error(logopt,
|
|
Ian Kent |
a3a09e |
MODPREFIX "failed to find query dn under search base dns");
|
|
Ian Kent |
a3a09e |
free(query);
|
|
Ian Kent |
a3a09e |
@@ -1954,6 +1957,12 @@ do_paged:
|
|
Ian Kent |
a3a09e |
sp->cookie = NULL;
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
+ if (rv != LDAP_SUCCESS) {
|
|
Ian Kent |
a3a09e |
+ debug(ap->logopt,
|
|
Ian Kent |
a3a09e |
+ MODPREFIX "ldap_parse_result failed with %d", rv);
|
|
Ian Kent |
a3a09e |
+ goto out_free;
|
|
Ian Kent |
a3a09e |
+ }
|
|
Ian Kent |
a3a09e |
+
|
|
Ian Kent |
a3a09e |
/*
|
|
Ian Kent |
a3a09e |
* Parse the page control returned to get the cookie and
|
|
Ian Kent |
a3a09e |
* determine whether there are more pages.
|
|
Ian Kent |
a3a09e |
@@ -1970,8 +1979,8 @@ do_paged:
|
|
Ian Kent |
a3a09e |
if (returnedControls)
|
|
Ian Kent |
a3a09e |
ldap_controls_free(returnedControls);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
+out_free:
|
|
Ian Kent |
a3a09e |
ldap_control_free(pageControl);
|
|
Ian Kent |
a3a09e |
-
|
|
Ian Kent |
a3a09e |
return rv;
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
diff --git a/modules/mount_autofs.c b/modules/mount_autofs.c
|
|
Ian Kent |
a3a09e |
index afb1859..2a5d860 100644
|
|
Ian Kent |
a3a09e |
--- a/modules/mount_autofs.c
|
|
Ian Kent |
a3a09e |
+++ b/modules/mount_autofs.c
|
|
Ian Kent |
a3a09e |
@@ -119,7 +119,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,
|
|
Ian Kent |
a3a09e |
else if (strncmp(cp, "timeout=", 8) == 0) {
|
|
Ian Kent |
a3a09e |
char *val = strchr(cp, '=');
|
|
Ian Kent |
a3a09e |
unsigned tout;
|
|
Ian Kent |
a3a09e |
- if (val++) {
|
|
Ian Kent |
a3a09e |
+ if (val) {
|
|
Ian Kent |
a3a09e |
int ret = sscanf(cp, "timeout=%u", &tout);
|
|
Ian Kent |
a3a09e |
if (ret)
|
|
Ian Kent |
a3a09e |
timeout = tout;
|
|
Ian Kent |
a3a09e |
diff --git a/modules/parse_sun.c b/modules/parse_sun.c
|
|
Ian Kent |
a3a09e |
index db36ae2..921daf4 100644
|
|
Ian Kent |
a3a09e |
--- a/modules/parse_sun.c
|
|
Ian Kent |
a3a09e |
+++ b/modules/parse_sun.c
|
|
Ian Kent |
a3a09e |
@@ -1334,7 +1334,7 @@ int parse_mount(struct autofs_point *ap, const char *name,
|
|
Ian Kent |
a3a09e |
char *pmapent, *options;
|
|
Ian Kent |
a3a09e |
const char *p;
|
|
Ian Kent |
a3a09e |
int mapent_len, rv = 0;
|
|
Ian Kent |
a3a09e |
- int optlen, cur_state;
|
|
Ian Kent |
a3a09e |
+ int cur_state;
|
|
Ian Kent |
a3a09e |
int slashify = ctxt->slashify_colons;
|
|
Ian Kent |
a3a09e |
unsigned int append_options;
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
@@ -1389,7 +1389,6 @@ int parse_mount(struct autofs_point *ap, const char *name,
|
|
Ian Kent |
a3a09e |
logerr(MODPREFIX "strdup: %s", estr);
|
|
Ian Kent |
a3a09e |
return 1;
|
|
Ian Kent |
a3a09e |
}
|
|
Ian Kent |
a3a09e |
- optlen = strlen(options);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
p = skipspace(pmapent);
|
|
Ian Kent |
a3a09e |
|
|
Ian Kent |
a3a09e |
diff --git a/redhat/autofs.init.in b/redhat/autofs.init.in
|
|
Ian Kent |
a3a09e |
index fded1d8..806302b 100644
|
|
Ian Kent |
a3a09e |
--- a/redhat/autofs.init.in
|
|
Ian Kent |
a3a09e |
+++ b/redhat/autofs.init.in
|
|
Ian Kent |
a3a09e |
@@ -172,7 +172,7 @@ case "$1" in
|
|
Ian Kent |
a3a09e |
fi
|
|
Ian Kent |
a3a09e |
;;
|
|
Ian Kent |
a3a09e |
*)
|
|
Ian Kent |
a3a09e |
- echo $"Usage: $0 {start|forcestart|stop|status|restart|orcerestart|reload|condrestart}"
|
|
Ian Kent |
a3a09e |
+ echo $"Usage: $0 {start|forcestart|stop|status|restart|forcerestart|reload|condrestart}"
|
|
Ian Kent |
a3a09e |
exit 1;
|
|
Ian Kent |
a3a09e |
;;
|
|
Ian Kent |
a3a09e |
esac
|