- add mutex call return check in defaults.c.
This commit is contained in:
parent
ff6f3ee6ef
commit
d7ed6c9090
203
autofs-5.1.0-add-mutex-call-return-check-in-defaults_c.patch
Normal file
203
autofs-5.1.0-add-mutex-call-return-check-in-defaults_c.patch
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
autofs-5.1.0 - add mutex call return check in defaults.c
|
||||||
|
|
||||||
|
From: Ian Kent <ikent@redhat.com>
|
||||||
|
|
||||||
|
Even though pthread_mutex_lock() and pthread_mutex_unlock() should
|
||||||
|
never fail checking their return has very occassionally been useful
|
||||||
|
and isn't consistent with the usage elsewhere.
|
||||||
|
---
|
||||||
|
CHANGELOG | 1 +
|
||||||
|
lib/defaults.c | 55 ++++++++++++++++++++++++++++++++++---------------------
|
||||||
|
2 files changed, 35 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG b/CHANGELOG
|
||||||
|
index cb74c60..04eedc4 100644
|
||||||
|
--- a/CHANGELOG
|
||||||
|
+++ b/CHANGELOG
|
||||||
|
@@ -19,6 +19,7 @@
|
||||||
|
- check options length before use in parse_amd.c.
|
||||||
|
- fix some out of order evaluations in parse_amd.c.
|
||||||
|
- fix copy and paste error in dup_defaults_entry().
|
||||||
|
+- add mutex call return check in defaults.c.
|
||||||
|
|
||||||
|
04/06/2014 autofs-5.1.0
|
||||||
|
=======================
|
||||||
|
diff --git a/lib/defaults.c b/lib/defaults.c
|
||||||
|
index 4e09c19..8d109a2 100644
|
||||||
|
--- a/lib/defaults.c
|
||||||
|
+++ b/lib/defaults.c
|
||||||
|
@@ -172,6 +172,19 @@ static int conf_update(const char *, const char *, const char *, unsigned long);
|
||||||
|
static void conf_delete(const char *, const char *);
|
||||||
|
static struct conf_option *conf_lookup(const char *, const char *);
|
||||||
|
|
||||||
|
+static void defaults_mutex_lock(void)
|
||||||
|
+{
|
||||||
|
+ int status = pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ if (status)
|
||||||
|
+ fatal(status);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void defaults_mutex_unlock(void)
|
||||||
|
+{
|
||||||
|
+ int status = defaults_mutex_unlock();
|
||||||
|
+ if (status)
|
||||||
|
+ fatal(status);
|
||||||
|
+}
|
||||||
|
|
||||||
|
static void message(unsigned int to_syslog, const char *msg, ...)
|
||||||
|
{
|
||||||
|
@@ -254,9 +267,9 @@ static void __conf_release(void)
|
||||||
|
|
||||||
|
void defaults_conf_release(void)
|
||||||
|
{
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
__conf_release();
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -728,11 +741,11 @@ static unsigned int conf_section_exists(const char *section)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
co = conf_lookup(section, section);
|
||||||
|
if (co)
|
||||||
|
ret = 1;
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@@ -1058,7 +1071,7 @@ unsigned int defaults_read_config(unsigned int to_syslog)
|
||||||
|
|
||||||
|
conf = oldconf = NULL;
|
||||||
|
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
if (!config) {
|
||||||
|
if (conf_init()) {
|
||||||
|
message(to_syslog, "failed to init config");
|
||||||
|
@@ -1150,7 +1163,7 @@ out:
|
||||||
|
fclose(conf);
|
||||||
|
if (oldconf)
|
||||||
|
fclose(oldconf);
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1159,11 +1172,11 @@ static char *conf_get_string(const char *section, const char *name)
|
||||||
|
struct conf_option *co;
|
||||||
|
char *val = NULL;
|
||||||
|
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
co = conf_lookup(section, name);
|
||||||
|
if (co && co->value)
|
||||||
|
val = strdup(co->value);
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1172,11 +1185,11 @@ static long conf_get_number(const char *section, const char *name)
|
||||||
|
struct conf_option *co;
|
||||||
|
long val = -1;
|
||||||
|
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
co = conf_lookup(section, name);
|
||||||
|
if (co && co->value)
|
||||||
|
val = atol(co->value);
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1185,7 +1198,7 @@ static int conf_get_yesno(const char *section, const char *name)
|
||||||
|
struct conf_option *co;
|
||||||
|
int val = -1;
|
||||||
|
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
co = conf_lookup(section, name);
|
||||||
|
if (co && co->value) {
|
||||||
|
if (isdigit(*co->value))
|
||||||
|
@@ -1195,7 +1208,7 @@ static int conf_get_yesno(const char *section, const char *name)
|
||||||
|
else if (!strcasecmp(co->value, "no"))
|
||||||
|
val = 0;
|
||||||
|
}
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1272,10 +1285,10 @@ struct list_head *defaults_get_uris(void)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
co = conf_lookup(autofs_gbl_sec, NAME_LDAP_URI);
|
||||||
|
if (!co) {
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
free(list);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@@ -1286,7 +1299,7 @@ struct list_head *defaults_get_uris(void)
|
||||||
|
add_uris(co->value, list);
|
||||||
|
co = co->next;
|
||||||
|
}
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
|
||||||
|
if (list_empty(list)) {
|
||||||
|
free(list);
|
||||||
|
@@ -1398,10 +1411,10 @@ struct ldap_searchdn *defaults_get_searchdns(void)
|
||||||
|
if (!defaults_read_config(0))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
co = conf_lookup(autofs_gbl_sec, NAME_SEARCH_BASE);
|
||||||
|
if (!co) {
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1417,7 +1430,7 @@ struct ldap_searchdn *defaults_get_searchdns(void)
|
||||||
|
|
||||||
|
new = alloc_searchdn(co->value);
|
||||||
|
if (!new) {
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
defaults_free_searchdns(sdn);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@@ -1434,7 +1447,7 @@ struct ldap_searchdn *defaults_get_searchdns(void)
|
||||||
|
|
||||||
|
co = co->next;
|
||||||
|
}
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
|
||||||
|
return sdn;
|
||||||
|
}
|
||||||
|
@@ -1512,9 +1525,9 @@ int defaults_master_set(void)
|
||||||
|
{
|
||||||
|
struct conf_option *co;
|
||||||
|
|
||||||
|
- pthread_mutex_lock(&conf_mutex);
|
||||||
|
+ defaults_mutex_lock();
|
||||||
|
co = conf_lookup(autofs_gbl_sec, NAME_MASTER_MAP);
|
||||||
|
- pthread_mutex_unlock(&conf_mutex);
|
||||||
|
+ defaults_mutex_unlock();
|
||||||
|
if (co)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
@ -8,7 +8,7 @@
|
|||||||
Summary: A tool for automatically mounting and unmounting filesystems
|
Summary: A tool for automatically mounting and unmounting filesystems
|
||||||
Name: autofs
|
Name: autofs
|
||||||
Version: 5.1.0
|
Version: 5.1.0
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
@ -33,6 +33,7 @@ Patch17: autofs-5.1.0-check-options-length-before-use-in-parse_amd_c.patch
|
|||||||
Patch18: autofs-5.1.0-fix-some-out-of-order-evaluations-in-parse_amd_c.patch
|
Patch18: autofs-5.1.0-fix-some-out-of-order-evaluations-in-parse_amd_c.patch
|
||||||
Patch19: autofs-5.1.0-fix-copy-and-paste-error-in-dup_defaults_entry.patch
|
Patch19: autofs-5.1.0-fix-copy-and-paste-error-in-dup_defaults_entry.patch
|
||||||
Patch20: autofs-5.1.0-fix-leak-in-parse_mount.patch
|
Patch20: autofs-5.1.0-fix-leak-in-parse_mount.patch
|
||||||
|
Patch21: autofs-5.1.0-add-mutex-call-return-check-in-defaults_c.patch
|
||||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
%if %{with_systemd}
|
%if %{with_systemd}
|
||||||
BuildRequires: systemd-units
|
BuildRequires: systemd-units
|
||||||
@ -110,6 +111,7 @@ echo %{version}-%{release} > .version
|
|||||||
%patch18 -p1
|
%patch18 -p1
|
||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
%patch20 -p1
|
%patch20 -p1
|
||||||
|
%patch21 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
LDFLAGS=-Wl,-z,now
|
LDFLAGS=-Wl,-z,now
|
||||||
@ -202,6 +204,9 @@ fi
|
|||||||
%dir /etc/auto.master.d
|
%dir /etc/auto.master.d
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jul 7 2014 Ian Kent <ikent@redhat.com> - 1:5.1.0-4
|
||||||
|
- add mutex call return check in defaults.c.
|
||||||
|
|
||||||
* Mon Jul 7 2014 Ian Kent <ikent@redhat.com> - 1:5.1.0-3
|
* Mon Jul 7 2014 Ian Kent <ikent@redhat.com> - 1:5.1.0-3
|
||||||
- fix compile error in defaults.c.
|
- fix compile error in defaults.c.
|
||||||
- add serialization to sasl init.
|
- add serialization to sasl init.
|
||||||
|
Loading…
Reference in New Issue
Block a user