diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-09-17 19:04:25 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-09-17 19:04:25 -0400 |
commit | c6f7943269c36be41d7c22ebb38eccc37357022b (patch) | |
tree | ba187a20923f1fd56f91f8e3829c61186ba5d776 | |
parent | 50f981719f1bc7066496bcc4ef78fcdbb1ff1806 (diff) | |
parent | 52342327c7e566a25bf69dc6df651de45959e6d6 (diff) | |
download | tor-c6f7943269c36be41d7c22ebb38eccc37357022b.tar.gz tor-c6f7943269c36be41d7c22ebb38eccc37357022b.zip |
Merge branch 'bug31570_041' into maint-0.4.1
-rw-r--r-- | changes/bug31570 | 5 | ||||
-rw-r--r-- | src/lib/malloc/map_anon.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/changes/bug31570 b/changes/bug31570 new file mode 100644 index 0000000000..f70b577b4c --- /dev/null +++ b/changes/bug31570 @@ -0,0 +1,5 @@ + o Major bugfixes (crash, android): + - Tolerate systems (including some Android installations) where madvise + and MADV_DONTDUMP are available at build-time, but not at run time. + Previously, these systems would notice a failed syscall and abort. + Fixes bug 31570; bugfix on 0.4.1.1-alpha. diff --git a/src/lib/malloc/map_anon.c b/src/lib/malloc/map_anon.c index 08b754540e..ae4edff769 100644 --- a/src/lib/malloc/map_anon.c +++ b/src/lib/malloc/map_anon.c @@ -111,7 +111,17 @@ static int nodump_mem(void *mem, size_t sz) { #if defined(MADV_DONTDUMP) - return madvise(mem, sz, MADV_DONTDUMP); + int rv = madvise(mem, sz, MADV_DONTDUMP); + if (rv == 0) { + return 0; + } else if (errno == ENOSYS || errno == EINVAL) { + return 0; // syscall not supported, or flag not supported. + } else { + tor_log_err_sigsafe("Unexpected error from madvise: ", + strerror(errno), + NULL); + return -1; + } #else (void) mem; (void) sz; |