stdlib: fix race with Driver.configs in Open

The Driver.configs map is protected by configMutex in
registerDriverConfig and unregisterDriverConfig, but not in Open. This
results in a race if Open is called while another goroutine is
registering/unregistering a DriverConfig.
pull/480/head
Greg Curtis 2018-11-10 00:28:05 -08:00
parent a0d2ce5a0e
commit 8b8e883961
No known key found for this signature in database
GPG Key ID: 7BACFD2FC814A7C0
1 changed files with 2 additions and 0 deletions

View File

@ -140,8 +140,10 @@ func (d *Driver) Open(name string) (driver.Conn, error) {
if len(name) >= 9 && name[0] == 0 {
idBuf := []byte(name)[1:9]
id := int64(binary.BigEndian.Uint64(idBuf))
d.configMutex.Lock()
connConfig = d.configs[id].ConnConfig
afterConnect = d.configs[id].AfterConnect
d.configMutex.Unlock()
name = name[9:]
}