From 80de11bc5b76e9db0c05990689fd55a32b5504e3 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Sun, 17 Jan 2021 17:09:35 -0800 Subject: [PATCH] Detect Mach_header.sizeofcmds==0 https://github.com/upx/upx/issues/448 modified: p_mach.cpp --- src/p_mach.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 131cc45c..fa3b21d8 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -1811,8 +1811,9 @@ bool PackMachBase::canPack() char buf[32]; snprintf(buf, sizeof(buf), "bad sizeofcmds %d", sz_mhcmds); throwCantPack(buf); } - if (16384 < sz_mhcmds) { // somewhat arbitrary, but amd64-darwin.macho-upxmain.c - throwCantPack("16384 < Mach_header.sizeofcmds"); + if (!sz_mhcmds + || 16384 < sz_mhcmds) { // somewhat arbitrary, but amd64-darwin.macho-upxmain.c + throwCantPack("16384 < Mach_header.sizeofcmds (or ==0)"); } rawmseg_buf.alloc(sz_mhcmds); rawmseg = (Mach_segment_command *)(void *)rawmseg_buf;