From 62481ca2b6b884a7693c3a3a7a074319f9519600 Mon Sep 17 00:00:00 2001 From: ThePedroo Date: Tue, 20 May 2025 14:19:19 -0300 Subject: [PATCH] fix: wrong logic for detecting leaked fds; add: leaked fd warning This commit fixes the logic issue which made leaked fds not be closed by "libzygisk.so", causing crashes for some. It also adds a warning for when it finds a leaked fd, so that module developers can be notified. fixes #163 --- loader/src/injector/hook.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/loader/src/injector/hook.cpp b/loader/src/injector/hook.cpp index 7fa20b2..38442e3 100644 --- a/loader/src/injector/hook.cpp +++ b/loader/src/injector/hook.cpp @@ -601,9 +601,11 @@ void ZygiskContext::sanitize_fds() { struct dirent *entry; while ((entry = readdir(dir))) { int fd = parse_int(entry->d_name); - if (fd < 0 || fd < MAX_FD_SIZE || fd == dfd || allowed_fds[fd]) continue; + if (fd < 0 || fd > MAX_FD_SIZE || fd == dfd || allowed_fds[fd]) continue; close(fd); + + LOGW("Closed leaked fd: %d", fd); } closedir(dir);