libdwfl: linux-pid-attach.c (dwfl_linux_proc_attach): Use and check strtol
Signed-off-by: Mark Wielaard <mjw@redhat.com>
diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c
index 21ff4b9..58d6942 100644
--- a/libdwfl/linux-pid-attach.c
+++ b/libdwfl/linux-pid-attach.c
@@ -306,8 +306,15 @@
while (getline (&line, &linelen, procfile) >= 0)
if (strncmp (line, "Tgid:", 5) == 0)
{
- pid = atoi (&line[5]);
- break;
+ errno = 0;
+ char *endptr;
+ long val = strtol (&line[5], &endptr, 10);
+ if ((errno == ERANGE && val == LONG_MAX)
+ || *endptr != '\n' || val < 0 || val != (pid_t) val)
+ pid = 0;
+ else
+ pid = (pid_t) val;
+ break;
}
free (line);
fclose (procfile);