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.7.orig/CHANGELOG
+++ autofs-5.1.7/CHANGELOG
@@ -102,6 +102,7 @@
 - bailout on rpc systemerror.
 - fix nfsv4 only mounts should not use rpcbind.
 - dont use initgroups() at spawn.
+- fix invalid tsv access.
 
 25/01/2021 autofs-5.1.7
 - make bind mounts propagation slave by default.
--- autofs-5.1.7.orig/daemon/automount.c
+++ autofs-5.1.7/daemon/automount.c
@@ -2518,6 +2518,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