fix: do proper checks for pongo bin

This commit is contained in:
CLARATION committed 2026-08-02 20:34:22 -07:00
1 parent 27eb58e188
commit 8d2fa31bc9
4 files changed
+31 -20

No files matched your search

+7 -15
View File
@@ -333,11 +333,10 @@ void parse_arguments(int argc, char* argv[]) {
LOG_ERROR("Failed to load pongo payload, is the path correct?");
exit(1);
}
if (g_payload_pongo.data_len > PONGO_MAX_SZ) {
LOG_ERROR("Pongo payload is too large! %zu bytes (max %zu)", g_payload_pongo.data_len, PONGO_MAX_SZ);
if (!check_payload_validity(&g_payload_pongo, true)) {
LOG_ERROR("Pongo payload is invalid or too large! %zu bytes", g_payload_pongo.data_len);
exit(1);
}
// TODO: check if macho, otherwise exit
LOG("Overriding pongo payload with %s", optarg);
break;
case 'K': // --override-kpf
@@ -345,11 +344,8 @@ void parse_arguments(int argc, char* argv[]) {
LOG_ERROR("Failed to load kpf payload, is the path correct?");
exit(1);
}
if (g_payload_kpf.data_len < 4
|| (memcmp(g_payload_kpf.data, MACHO_MAGIC_64, 4) != 0
&& memcmp(g_payload_kpf.data, MACHO_MAGIC_32, 4) != 0))
{
LOG_ERROR("Invalid kpf payload, is it macho?");
if (!check_payload_validity(&g_payload_kpf, false)) {
LOG_ERROR("KPF payload is invalid! Is it a valid Mach-O binary?");
exit(1);
}
LOG("Overriding kpf payload with %s", optarg);
@@ -476,8 +472,8 @@ void parse_arguments(int argc, char* argv[]) {
LOG_ERROR("Failed to load pongo payload from env, is the path correct?");
exit(1);
}
if (g_payload_pongo.data_len > PONGO_MAX_SZ) {
LOG_ERROR("Pongo payload is too large! %zu bytes (max %zu)", g_payload_pongo.data_len, PONGO_MAX_SZ);
if (!check_payload_validity(&g_payload_pongo, true)) {
LOG_ERROR("Pongo payload is invalid or too large! %zu bytes", g_payload_pongo.data_len);
exit(1);
}
LOG("Overriding pongo payload with %s (from env)", env_pongo);
@@ -489,10 +485,7 @@ void parse_arguments(int argc, char* argv[]) {
LOG_ERROR("Failed to load kpf payload from env, is the path correct?");
exit(1);
}
if (g_payload_kpf.data_len < 4
|| (memcmp(g_payload_kpf.data, MACHO_MAGIC_64, 4) != 0
&& memcmp(g_payload_kpf.data, MACHO_MAGIC_32, 4) != 0))
{
if (!check_payload_validity(&g_payload_kpf, false)) {
LOG_ERROR("Invalid kpf payload from env, is it macho?");
exit(1);
}
@@ -517,7 +510,6 @@ void parse_arguments(int argc, char* argv[]) {
LOG("Overriding ramdisk payload with %s (from env)", env_ramdisk);
}
// MARK: Flag checks
if ((palerain_flags & palerain_option_pongo_exit) &&