From ba2283bd3780a13f26521c5c47deedfc7184ed7d Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Thu, 20 Jun 2013 23:17:03 +0200 Subject: [PATCH] Remove invalid assert() in tracked_fds_find(). --- src/trackfds.h | 7 ++++++- tests/example.c | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/trackfds.h b/src/trackfds.h index acf7ce3..f0ba879 100644 --- a/src/trackfds.h +++ b/src/trackfds.h @@ -329,7 +329,11 @@ static int tracked_fds_find_slow(int fd) noinline; */ inline static int tracked_fds_find(int fd) always_inline; inline static int tracked_fds_find(int fd) { - assert(fd >= 0); + /* Invalid file descriptor. No assert() as we're called from the hooked + * macro. */ + if (unlikely(fd < 0)) { + return 0; + } if (fd < TRACKFDS_STATIC_COUNT) { return tracked_fds[fd]; @@ -339,6 +343,7 @@ inline static int tracked_fds_find(int fd) { } static int tracked_fds_find_slow(int fd) { assert(initialized); + assert(fd >= 0); if (tracked_fds_list_count == 0) { return 0; diff --git a/tests/example.c b/tests/example.c index fc5c01e..3d165e5 100644 --- a/tests/example.c +++ b/tests/example.c @@ -57,6 +57,7 @@ int main(int argc, char **argv unused) { putc_unlocked('\n', stdout); /* Test invalid stuff. */ + write(-3, "foo", 3); close(-42); close(-4711); /* Can't test this, results in a segfault with the "normal" fclose(). */ -- 2.43.2