HomeFreeBSD

sh: Fix rare memory leak with SIGINT

Description

sh: Fix rare memory leak with SIGINT

If getcwd() failed earlier on but later succeeded in the pwd builtin,
there was no INTOFF protection between calling savestr() and storing its
result.

It is quite rare for getcwd() to fail, and rarer for it to succeed later in
the same directory.

Found via code inspection for changing ckmalloc() and similar to assert
INTOFF protection instead of applying it directly (which protects against
corrupting malloc's internal state but allows memory leaks or double frees).

MFC after: 1 week

Details

Provenance
jillesAuthored on
Parents
rS356250: Revert r356249 for now as it broke GCC builds.
Branches
Unknown
Tags
Unknown