Blob Blame History Raw
autofs-5.1.8 - fix invalid tsv access

From: Ian Kent <raven@themaw.net>

When using the --dumpmaps option of automount(8) a SEGV can occur
because a thread specific data variable accessed in the code hasn't
yet been created.

The thread specific data doesn't need to be set to list the maps
so we can create the key and rely on pthread_getspecific() returning
NULL when the value hasn't been set as this case is handled correctly.

Signed-off-by: Ian Kent <raven@themaw.net>
---
 CHANGELOG          |    1 +
 daemon/automount.c |    9 +++++++++
 2 files changed, 10 insertions(+)

--- autofs-5.1.4.orig/CHANGELOG
+++ autofs-5.1.4/CHANGELOG
@@ -95,6 +95,7 @@
 - remove nonstrict parameter from tree_mapent_umount_offsets().
 - fix handling of incorrect return from umount_ent().
 - dont use initgroups() at spawn.
+- fix invalid tsv access.
 
 xx/xx/2018 autofs-5.1.5
 - fix flag file permission.
--- autofs-5.1.4.orig/daemon/automount.c
+++ autofs-5.1.4/daemon/automount.c
@@ -2510,6 +2510,15 @@ int main(int argc, char *argv[])
 				master = argv[2];
 		}
 
+		status = pthread_key_create(&key_thread_stdenv_vars,
+					key_thread_stdenv_vars_destroy);
+		if (status) {
+			logerr("%s: failed to create thread data key for std env vars!",
+			       program);
+			macro_free_global_table();
+			exit(1);
+		}
+
 		if (master)
 			master_list = master_new(NULL, timeout, flags);
 		else