diff options
author | Y. T. Chung <zonyitoo@gmail.com> | 2017-07-21 13:40:29 (GMT) |
---|---|---|
committer | David Goldblatt <davidtgoldblatt@gmail.com> | 2017-07-22 14:46:30 (GMT) |
commit | aa6c2821374f6dd6ed2e628c06bc08b0c4bc485c (patch) | |
tree | ec32a69e8d2c4a8c7fb4b48064637dd74c10d008 | |
parent | e215a7bc18a2c3263a6fcca37c1ec53af6c4babd (diff) | |
download | jemalloc-aa6c2821374f6dd6ed2e628c06bc08b0c4bc485c.zip jemalloc-aa6c2821374f6dd6ed2e628c06bc08b0c4bc485c.tar.gz jemalloc-aa6c2821374f6dd6ed2e628c06bc08b0c4bc485c.tar.bz2 |
Validates fd before calling fcntl
-rw-r--r-- | src/pages.c | 12 | ||||
-rw-r--r-- | src/prof.c | 4 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/pages.c b/src/pages.c index 0883647..f8ef2bc 100644 --- a/src/pages.c +++ b/src/pages.c @@ -358,7 +358,9 @@ os_overcommits_proc(void) { O_CLOEXEC); #else fd = (int)syscall(SYS_open, "/proc/sys/vm/overcommit_memory", O_RDONLY); - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + if (fd != -1) { + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + } #endif #elif defined(JEMALLOC_USE_SYSCALL) && defined(SYS_openat) #if defined(O_CLOEXEC) @@ -367,14 +369,18 @@ os_overcommits_proc(void) { #else fd = (int)syscall(SYS_openat, AT_FDCWD, "/proc/sys/vm/overcommit_memory", O_RDONLY); - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + if (fd != -1) { + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + } #endif #else #if defined(O_CLOEXEC) fd = open("/proc/sys/vm/overcommit_memory", O_RDONLY | O_CLOEXEC); #else fd = open("/proc/sys/vm/overcommit_memory", O_RDONLY); - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + if (fd != -1) { + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + } #endif #endif @@ -1414,7 +1414,9 @@ prof_open_maps(const char *format, ...) { mfd = open(filename, O_RDONLY | O_CLOEXEC); #else mfd = open(filename, O_RDONLY); - fcntl(mfd, F_SETFD, fcntl(mfd, F_GETFD) | FD_CLOEXEC); + if (mfd != -1) { + fcntl(mfd, F_SETFD, fcntl(mfd, F_GETFD) | FD_CLOEXEC); + } #endif return mfd; |