Bug 23340 – std.path: expandTilde erroneously raises onOutOfMemory on failed getpwam_r()

Status
RESOLVED
Resolution
FIXED
Severity
major
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2022-09-17T15:14:16Z
Last change time
2022-09-18T22:00:36Z
Keywords
pull
Assigned to
No Owner
Creator
Iain Buclaw

Comments

Comment #0 by ibuclaw — 2022-09-17T15:14:16Z
The condition for raising onOutOfMemory is: ``` if (errno != ERANGE && // On BSD and OSX, errno can be left at 0 instead of set to ERANGE errno != 0) onOutOfMemoryError(); ``` The documentation of getpwam_r says any of the following errno codes could be set. --- ERRORS 0 or ENOENT or ESRCH or EBADF or EPERM or ... The given name or uid was not found. EINTR A signal was caught; see signal(7). EIO I/O error. EMFILE The per-process limit on the number of open file descriptors has been reached. ENFILE The system-wide limit on the total number of open files has been reached. ENOMEM Insufficient memory to allocate passwd structure. ERANGE Insufficient buffer space supplied. --- The first set of errors should be checked, which breaks the loop before raising an OOM Exception (ENOENT is not an OOM issue). Test that triggers failure. ``` assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey"); ```
Comment #1 by dlang-bot — 2022-09-18T16:47:05Z
@ibuclaw created dlang/phobos pull request #8572 "fix Issue 23340 - std.path: expandTilde erroneously raises onOutOfMemory on failed getpwam_r()" fixing this issue: - fix Issue 23340 - std.path: expandTilde erroneously raises onOutOfMemory on failed getpwam_r() https://github.com/dlang/phobos/pull/8572
Comment #2 by dlang-bot — 2022-09-18T22:00:36Z
dlang/phobos pull request #8572 "fix Issue 23340 - std.path: expandTilde erroneously raises onOutOfMemory on failed getpwam_r()" was merged into master: - 73411fa4e675de2542bda1f6a53f5f9647c99eb0 by Iain Buclaw: fix Issue 23340 - std.path: expandTilde erroneously raises onOutOfMemory on failed getpwam_r() https://github.com/dlang/phobos/pull/8572