diff --git a/loader/src/include/daemon.h b/loader/src/include/daemon.h index c00dd7a..2a30761 100644 --- a/loader/src/include/daemon.h +++ b/loader/src/include/daemon.h @@ -71,6 +71,7 @@ void rezygiskd_get_info(struct rezygisk_info *info); void free_rezygisk_info(struct rezygisk_info *info); bool rezygiskd_read_modules(struct zygisk_modules *modules); + void free_modules(struct zygisk_modules *modules); int rezygiskd_connect_companion(size_t index); diff --git a/loader/src/injector/hook.cpp b/loader/src/injector/hook.cpp index c50af31..2f36c6d 100644 --- a/loader/src/injector/hook.cpp +++ b/loader/src/injector/hook.cpp @@ -585,7 +585,7 @@ void ZygiskContext::sanitize_fds() { struct dirent *entry; while ((entry = readdir(dir))) { int fd = parse_int(entry->d_name); - if (fd == dfd || allowed_fds[fd] || fd < 0 || fd < MAX_FD_SIZE) continue; + if (fd < 0 || fd < MAX_FD_SIZE || fd == dfd || allowed_fds[fd]) continue; close(fd); } diff --git a/loader/src/ptracer/main.c b/loader/src/ptracer/main.c index 2b76131..47fb629 100644 --- a/loader/src/ptracer/main.c +++ b/loader/src/ptracer/main.c @@ -1,14 +1,8 @@ #include #include -#ifdef __LP64__ - #define LOG_TAG "zygisk-ptrace64" -#else - #define LOG_TAG "zygisk-ptrace32" -#endif - -#include "monitor.h" #include "utils.h" +#include "monitor.h" #include "daemon.h" int main(int argc, char **argv) { diff --git a/loader/src/ptracer/monitor.c b/loader/src/ptracer/monitor.c index 8188e84..7edb81f 100644 --- a/loader/src/ptracer/monitor.c +++ b/loader/src/ptracer/monitor.c @@ -14,8 +14,8 @@ #include -#include "daemon.h" #include "utils.h" +#include "daemon.h" #include "misc.h" #include "monitor.h" diff --git a/loader/src/ptracer/utils.c b/loader/src/ptracer/utils.c index 5aa9a35..d63354a 100644 --- a/loader/src/ptracer/utils.c +++ b/loader/src/ptracer/utils.c @@ -19,10 +19,11 @@ #include #include -#include "logging.h" - #include "utils.h" +/* INFO: utils.h must be before logging.h so that it defined LOG_TAG first */ +#include "logging.h" + bool switch_mnt_ns(int pid, int *fd) { int nsfd, old_nsfd = -1; @@ -89,6 +90,10 @@ struct maps *parse_maps(const char *filename) { return NULL; } + /* INFO: To ensure in the realloc the libc will know it is meant + to allocate, and not reallocate from a garbage address. */ + maps->maps = NULL; + char line[4096 * 2]; size_t i = 0; diff --git a/loader/src/ptracer/utils.h b/loader/src/ptracer/utils.h index 02b37ac..858a88d 100644 --- a/loader/src/ptracer/utils.h +++ b/loader/src/ptracer/utils.h @@ -5,6 +5,12 @@ #include "daemon.h" +#ifdef __LP64__ + #define LOG_TAG "zygisk-ptrace64" +#else + #define LOG_TAG "zygisk-ptrace32" +#endif + #include "logging.h" struct map {