You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.0 KiB
75 lines
2.0 KiB
autofs-5.1.3 - fix unset tsd group name handling |
|
|
|
From: Ian Kent <raven@themaw.net> |
|
|
|
Commit 1a64a6bbc5 changed set_tsd_user_vars() to the thread specific |
|
values even if the group name could not be obtained. |
|
|
|
But the structure holding the values was not initialized on allocation |
|
so the group field might not be NULL when no group name is available. |
|
|
|
Also the macro addition and removal functions didn't properly handle a |
|
macro value of NULL. |
|
|
|
Signed-off-by: Ian Kent <raven@themaw.net> |
|
Reported-by: Donald Buczek <buczek@molgen.mpg.de> |
|
--- |
|
CHANGELOG | 1 + |
|
lib/macros.c | 8 +++++--- |
|
lib/mounts.c | 1 + |
|
3 files changed, 7 insertions(+), 3 deletions(-) |
|
|
|
--- autofs-5.0.7.orig/CHANGELOG |
|
+++ autofs-5.0.7/CHANGELOG |
|
@@ -250,6 +250,7 @@ |
|
- increase worker thread per-thread stack size. |
|
- limit getgrgid_r() buffer size. |
|
- add congigure option for limiting getgrgid_r() stack usage. |
|
+- fix unset tsd group name handling. |
|
|
|
25/07/2012 autofs-5.0.7 |
|
======================= |
|
--- autofs-5.0.7.orig/lib/macros.c |
|
+++ autofs-5.0.7/lib/macros.c |
|
@@ -281,18 +281,20 @@ macro_addvar(struct substvar *table, con |
|
} |
|
|
|
if (lv) { |
|
- char *this = malloc(strlen(value) + 1); |
|
+ const char *val = value ? value : ""; |
|
+ char *this = malloc(strlen(val) + 1); |
|
if (!this) { |
|
lv = table; |
|
goto done; |
|
} |
|
- strcpy(this, value); |
|
+ strcpy(this, val); |
|
free(lv->val); |
|
lv->val = this; |
|
if (lv != table) |
|
lv = table; |
|
} else { |
|
struct substvar *new; |
|
+ const char *this = value ? value : ""; |
|
char *def, *val; |
|
|
|
def = strdup(str); |
|
@@ -302,7 +304,7 @@ macro_addvar(struct substvar *table, con |
|
} |
|
def[len] = '\0'; |
|
|
|
- val = strdup(value); |
|
+ val = strdup(this); |
|
if (!val) { |
|
lv = table; |
|
free(def); |
|
--- autofs-5.0.7.orig/lib/mounts.c |
|
+++ autofs-5.0.7/lib/mounts.c |
|
@@ -1456,6 +1456,7 @@ void set_tsd_user_vars(unsigned int logo |
|
error(logopt, "failed alloc tsv storage"); |
|
return; |
|
} |
|
+ memset(tsv, 0, sizeof(struct thread_stdenv_vars)); |
|
|
|
tsv->uid = uid; |
|
tsv->gid = gid;
|
|
|