From: Serhei Makarov Date: Mon, 22 Jun 2026 18:24:13 +0000 (-0400) Subject: src/stackprof.cxx: fixing the find_procfile parse X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6e217df8c0f6f5c35c15a5833fe433bb0a99c02;p=thirdparty%2Felfutils.git src/stackprof.cxx: fixing the find_procfile parse --- diff --git a/src/stackprof.cxx b/src/stackprof.cxx index dee8ef13..eab24845 100644 --- a/src/stackprof.cxx +++ b/src/stackprof.cxx @@ -1226,7 +1226,9 @@ int PerfConsumerUnwinder::find_procfile(Dwfl *dwfl, pid_t *pid, Elf **elf, int * char *endptr; long val = strtol (&line.c_str()[5], &endptr, 10); if ((errno == ERANGE && val == LONG_MAX) - || *endptr != '\n' || val < 0 || val != (pid_t) val) + || (*endptr != 0 && *endptr != '\n') + /* <- getline(3) ambiguous on what ends the string */ + || val < 0 || val != (pid_t) val) *pid = 0; else *pid = (pid_t) val; @@ -1341,7 +1343,7 @@ Dwfl *PerfConsumerUnwinder::find_dwfl(pid_t pid, const uint64_t *regs, uint32_t goto reuse; } err = this->find_procfile(dwfl, &pid, &elf, &elf_fd); - if (err != 0) /* TODO check errnos */ + if (err != 0) { if (verbose) cerr << format("WARNING: find_procfile pid {}: {}\n", (long long) pid, dwfl_errmsg(-1));