pwdx: fails when run in a nonexistent locale
pwdx rather mysteriously fails with "invalid process id" when run in a nonexistent locale (e.g. "LC_ALL=foo pwdx $$"). This is because it fails to obey the documented calling sequence for strtol - that is, set errno to 0 before the call - and thus the errno from the setlocale failure bleeds over into its check for whether strtol failed. References: http://bugs.debian.org/718766 Signed-off-by: Craig Small <csmall@enc.com.au>
This commit is contained in:
parent
b83788993b
commit
26ae657950
1
pwdx.c
1
pwdx.c
@ -52,6 +52,7 @@ int check_pid_argument(char *input)
|
|||||||
|
|
||||||
if (!strncmp("/proc/", input, 6))
|
if (!strncmp("/proc/", input, 6))
|
||||||
skip = 6;
|
skip = 6;
|
||||||
|
errno = 0;
|
||||||
pid = strtol(input + skip, &end, 10);
|
pid = strtol(input + skip, &end, 10);
|
||||||
|
|
||||||
if (errno || input + skip == end || (end && *end))
|
if (errno || input + skip == end || (end && *end))
|
||||||
|
Loading…
Reference in New Issue
Block a user