mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-16 22:11:18 +00:00
Merge pull request #7843 from koranza/devel
os.findExe: check string lengths to avoid index out of bound
This commit is contained in:
@@ -139,6 +139,7 @@ proc findExe*(exe: string, followSymlinks: bool = true;
|
||||
## is added the `ExeExts <#ExeExts>`_ file extensions if it has none.
|
||||
## If the system supports symlinks it also resolves them until it
|
||||
## meets the actual file. This behavior can be disabled if desired.
|
||||
if exe.len == 0: return
|
||||
template checkCurrentDir() =
|
||||
for ext in extensions:
|
||||
result = addFileExt(exe, ext)
|
||||
@@ -149,6 +150,7 @@ proc findExe*(exe: string, followSymlinks: bool = true;
|
||||
checkCurrentDir()
|
||||
let path = string(getEnv("PATH"))
|
||||
for candidate in split(path, PathSep):
|
||||
if candidate.len == 0: continue
|
||||
when defined(windows):
|
||||
var x = (if candidate[0] == '"' and candidate[^1] == '"':
|
||||
substr(candidate, 1, candidate.len-2) else: candidate) /
|
||||
@@ -1649,4 +1651,4 @@ proc setLastModificationTime*(file: string, t: times.Time) =
|
||||
var ft = t.toWinTime.toFILETIME
|
||||
let res = setFileTime(h, nil, nil, ft.addr)
|
||||
discard h.closeHandle
|
||||
if res == 0'i32: raiseOSError(osLastError())
|
||||
if res == 0'i32: raiseOSError(osLastError())
|
||||
|
||||
Reference in New Issue
Block a user