improve: companion.c, dl.c and utils.c code

This commit improves the code for multiple files by making "read_string" function already make the string NULL-terminated, avoiding code duplication. Also for "companion.c" fixes an "if" where it would read "client_fd" and check if "fd" is equal to "-1", instead of "client_fd", also does some overall code improvements there like detaching the thread, avoiding memory leaks in the exit, of the thread itself.
This commit is contained in:
ThePedroo
2024-12-22 14:57:39 -03:00
parent 6b0b71a690
commit 7a892e0d62
5 changed files with 59 additions and 67 deletions

View File

@@ -465,13 +465,15 @@ void zygiskd_start(char *restrict argv[]) {
break;
}
/* TODO: Move to another thread and save client fds to an epoll list
so that we can, in a single-thread, deal with multiple logcats */
case RequestLogcatFd: {
uint8_t level = 0;
ssize_t ret = read_uint8_t(client_fd, &level);
ASSURE_SIZE_READ_BREAK("RequestLogcatFd", "level", ret, sizeof(level));
char tag[128 + 1];
ret = read_string(client_fd, tag, sizeof(tag) - 1);
ret = read_string(client_fd, tag, sizeof(tag));
if (ret == -1) {
LOGE("Failed reading logcat tag.\n");
@@ -480,10 +482,7 @@ void zygiskd_start(char *restrict argv[]) {
break;
}
tag[ret] = '\0';
/* INFO: Non-NULL terminated */
char message[1024];
char message[1024 + 1];
ret = read_string(client_fd, message, sizeof(message));
if (ret == -1) {
LOGE("Failed reading logcat message.\n");
@@ -493,7 +492,7 @@ void zygiskd_start(char *restrict argv[]) {
break;
}
__android_log_print(level, tag, "%.*s", (int)ret, message);
__android_log_print(level, tag, "%s", message);
break;
}