summaryrefslogtreecommitdiff
path: root/src/large_pages
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2019-06-21 11:16:05 +0200
committerRich Trott <rtrott@gmail.com>2019-07-30 06:21:06 -0700
commit54ae5309513b3fa3b9ffa0e03faa70cf22a0bb90 (patch)
tree2ee63032f4a07cc1c623bab51e32de31942e146f /src/large_pages
parent89344f5bee0dc566e5990c9618efbb73d6a9284d (diff)
downloadandroid-node-v8-54ae5309513b3fa3b9ffa0e03faa70cf22a0bb90.tar.gz
android-node-v8-54ae5309513b3fa3b9ffa0e03faa70cf22a0bb90.tar.bz2
android-node-v8-54ae5309513b3fa3b9ffa0e03faa70cf22a0bb90.zip
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 <rtrott@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'src/large_pages')
-rw-r--r--src/large_pages/node_large_page.cc8
1 files changed, 6 insertions, 2 deletions
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)) {