From 90adebde106801a92263782206c7d88da04dea92 Mon Sep 17 00:00:00 2001 From: Delon Date: Sat, 8 Dec 2018 11:09:08 +0800 Subject: [PATCH 1/2] fill the memory with zeros on dylib_command allocation --- macho_edit/menu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macho_edit/menu.cpp b/macho_edit/menu.cpp index ee919ea..328513b 100644 --- a/macho_edit/menu.cpp +++ b/macho_edit/menu.cpp @@ -283,7 +283,7 @@ load_command *get_path_cmd(const char *prompt, size_t header_size, uint32_t *cmd uint32_t path_size = (uint32_t)ROUND_UP(path.length() + 1, PATH_PADDING); *cmdsize = (uint32_t)header_size + path_size; - load_command *lc = (load_command *)malloc(*cmdsize); + load_command *lc = (load_command *)calloc(*cmdsize, sizeof(char)); memcpy(((uint8_t *)lc) + header_size, path.c_str(), path.length()); return lc; } From 4ceb911d9056fa251d83bfd38e5d28fb013e2b23 Mon Sep 17 00:00:00 2001 From: Chandashi Date: Thu, 13 Dec 2018 14:33:20 +0800 Subject: [PATCH 2/2] support new load command --- macho_edit/load_command.cpp | 18 ++++++++++++++++++ macho_edit/magicnames.cpp | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/macho_edit/load_command.cpp b/macho_edit/load_command.cpp index 0db9616..28eede2 100644 --- a/macho_edit/load_command.cpp +++ b/macho_edit/load_command.cpp @@ -155,6 +155,24 @@ std::string LoadCommand::description() const { break; } +#ifdef LC_BUILD_VERSION + case LC_VERSION_MIN_TVOS: + case LC_VERSION_MIN_WATCHOS: { + auto *c = (version_min_command *)raw_lc; + o << ": " << c->version << "-" << c->sdk; + break; + } + case LC_NOTE: { + auto *c = (note_command *)raw_lc; + o << ": " << std::string(c->data_owner, ELEMENTS(c->data_owner)); + break; + } + case LC_BUILD_VERSION: { + auto *c = (build_version_command *)raw_lc; + o << ": " << c->platform << "-" << c->minos << "-" << c->sdk << "-" << c->ntools; + break; + } +#endif } return o.str(); diff --git a/macho_edit/magicnames.cpp b/macho_edit/magicnames.cpp index 5740716..dbb76d5 100644 --- a/macho_edit/magicnames.cpp +++ b/macho_edit/magicnames.cpp @@ -73,6 +73,12 @@ std::string cmd_name(uint32_t cmd) { RET_NAME(LC_ENCRYPTION_INFO_64); RET_NAME(LC_LINKER_OPTION); RET_NAME(LC_LINKER_OPTIMIZATION_HINT); +#ifdef LC_BUILD_VERSION + RET_NAME(LC_VERSION_MIN_TVOS); + RET_NAME(LC_VERSION_MIN_WATCHOS); + RET_NAME(LC_NOTE); + RET_NAME(LC_BUILD_VERSION); +#endif } std::ostringstream o;