Fix race condition in config.Getenv

The envDeps map may be accessed concurrently by multiple modules
in GenerateBuildActions, wrap the accesses in a mutex.

Change-Id: I18abf2687997c045a99b987908623f7d8c2ea344
diff --git a/common/config.go b/common/config.go
index a6837c1..5d761e6 100644
--- a/common/config.go
+++ b/common/config.go
@@ -20,6 +20,7 @@
 	"os"
 	"path/filepath"
 	"runtime"
+	"sync"
 )
 
 // The configuration file name
@@ -44,6 +45,8 @@
 	FileConfigurableOptions
 
 	srcDir  string // the path of the root source directory
+
+	envLock sync.Mutex
 	envDeps map[string]string
 }
 
@@ -166,10 +169,12 @@
 func (c *config) Getenv(key string) string {
 	var val string
 	var exists bool
+	c.envLock.Lock()
 	if val, exists = c.envDeps[key]; !exists {
 		val = os.Getenv(key)
 		c.envDeps[key] = val
 	}
+	c.envLock.Unlock()
 	return val
 }