Преглед на файлове

Merge pull request #46065 from corhere/libn/defuse-datastore-key-latent-race

libnetwork/datastore: prevent data races in Key()
Sebastiaan van Stijn преди 1 година
родител
ревизия
7ced56b356
променени са 1 файла, в които са добавени 8 реда и са изтрити 3 реда
  1. 8 3
      libnetwork/datastore/datastore.go

+ 8 - 3
libnetwork/datastore/datastore.go

@@ -149,9 +149,14 @@ func (cfg *ScopeCfg) IsValid() bool {
 
 // Key provides convenient method to create a Key
 func Key(key ...string) string {
-	keychain := append(rootChain, key...)
-	str := strings.Join(keychain, "/")
-	return str + "/"
+	var b strings.Builder
+	for _, parts := range [][]string{rootChain, key} {
+		for _, part := range parts {
+			b.WriteString(part)
+			b.WriteString("/")
+		}
+	}
+	return b.String()
 }
 
 // ParseKey provides convenient method to unpack the key to complement the Key function