From 54ae5309513b3fa3b9ffa0e03faa70cf22a0bb90 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 21 Jun 2019 11:16:05 +0200 Subject: src: readlink("/proc/self/exe") -> uv_exename() This commit also adds error handling. A THP-enabled build terminated with an out-of-memory error on a system without /proc because it cast the -1 from readlink() to size_t (i.e. ULONG_MAX) and then tried to allocate a string of that size. PR-URL: https://github.com/nodejs/node/pull/28333 Reviewed-By: Rich Trott Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Anna Henningsen --- src/large_pages/node_large_page.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/large_pages') diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 79cc013dee..e6829708aa 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -115,8 +115,12 @@ static struct text_region FindNodeTextRegion() { std::string exename; { char selfexe[PATH_MAX]; - ssize_t count = readlink("/proc/self/exe", selfexe, PATH_MAX); - exename = std::string(selfexe, count); + + size_t size = sizeof(selfexe); + if (uv_exepath(selfexe, &size)) + return nregion; + + exename = std::string(selfexe, size); } while (std::getline(ifs, map_line)) { -- cgit v1.2.3