Skip to content

Commit b5742bc

Browse files
committed
Merge branch 'master' of github.com:DNSCrypt/dnscrypt-proxy
* 'master' of github.com:DNSCrypt/dnscrypt-proxy: Fix TOCTOU race in refreshServer (#3224)
2 parents 0156081 + 7fe5e42 commit b5742bc

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

dnscrypt-proxy/serversInfo.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,20 +223,20 @@ func (serversInfo *ServersInfo) refreshServer(proxy *Proxy, name string, stamp s
223223
}
224224
newServer.rtt = ewma.NewMovingAverage(RTTEwmaDecay)
225225
newServer.rtt.Set(float64(newServer.initialRtt))
226-
isNew = true
227226
serversInfo.Lock()
227+
found := false
228228
for i, oldServer := range serversInfo.inner {
229229
if oldServer.Name == name {
230230
serversInfo.inner[i] = &newServer
231-
isNew = false
231+
found = true
232232
break
233233
}
234234
}
235-
serversInfo.Unlock()
236-
if isNew {
237-
serversInfo.Lock()
235+
if !found {
238236
serversInfo.inner = append(serversInfo.inner, &newServer)
239-
serversInfo.Unlock()
237+
}
238+
serversInfo.Unlock()
239+
if !found {
240240
proxy.serversInfo.registerServer(name, stamp)
241241
}
242242

0 commit comments

Comments
 (0)