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.
76 lines
2.0 KiB
76 lines
2.0 KiB
7 years ago
|
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;
|