Skip to content

Commit c735660

Browse files
committed
Add mutex for the shared sshVersions map
Signed-off-by: Anders F Björklund <[email protected]>
1 parent 20a30b1 commit c735660

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

pkg/sshutil/sshutil.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,11 @@ type sshExecutable struct {
285285
ModTime time.Time
286286
}
287287

288-
// sshVersions caches the parsed version of each ssh executable, if it is needed again.
289-
var sshVersions = map[sshExecutable]*semver.Version{}
288+
var (
289+
// sshVersions caches the parsed version of each ssh executable, if it is needed again.
290+
sshVersions = map[sshExecutable]*semver.Version{}
291+
sshVersionsRW sync.RWMutex
292+
)
290293

291294
func DetectOpenSSHVersion(ssh string) semver.Version {
292295
var (
@@ -300,7 +303,10 @@ func DetectOpenSSHVersion(ssh string) semver.Version {
300303
} else {
301304
st, _ := os.Stat(path)
302305
exe = sshExecutable{Path: path, Size: st.Size(), ModTime: st.ModTime()}
303-
if ver := sshVersions[exe]; ver != nil {
306+
sshVersionsRW.RLock()
307+
ver := sshVersions[exe]
308+
sshVersionsRW.RUnlock()
309+
if ver != nil {
304310
return *ver
305311
}
306312
}
@@ -311,7 +317,9 @@ func DetectOpenSSHVersion(ssh string) semver.Version {
311317
} else {
312318
v = *ParseOpenSSHVersion(stderr.Bytes())
313319
logrus.Debugf("OpenSSH version %s detected", v)
320+
sshVersionsRW.Lock()
314321
sshVersions[exe] = &v
322+
sshVersionsRW.Unlock()
315323
}
316324
return v
317325
}

0 commit comments

Comments
 (0)