mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 18:02:05 +00:00
fix use after free (#22854)
1. `freeAddrInfo` is called prematurely, the variable `myAddr` is still in use 2. Use defer syntax to ensure that `freeAddrInfo` is also called on exceptions
This commit is contained in:
@@ -392,6 +392,8 @@ when not useNimNetLite:
|
||||
myAddr: pointer
|
||||
addrLen = 0
|
||||
family = 0
|
||||
|
||||
defer: freeAddrInfo(addrInfo)
|
||||
|
||||
if addrInfo.ai_addr.sa_family.cint == nativeAfInet:
|
||||
family = nativeAfInet
|
||||
@@ -404,8 +406,6 @@ when not useNimNetLite:
|
||||
else:
|
||||
raise newException(IOError, "Unknown socket family in `getHostByAddr()`")
|
||||
|
||||
freeAddrInfo(addrInfo)
|
||||
|
||||
when useWinVersion:
|
||||
var s = winlean.gethostbyaddr(cast[ptr InAddr](myAddr), addrLen.cuint,
|
||||
cint(family))
|
||||
|
||||
Reference in New Issue
Block a user