From 361958db76dace01984d9f8fe58fd5798d1ace5b Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Mon, 26 Sep 2016 15:38:04 +0200 Subject: [PATCH] Check endian in assertPacker(). --- src/conf.h | 2 +- src/packer.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/conf.h b/src/conf.h index 964648de..75320ef0 100644 --- a/src/conf.h +++ b/src/conf.h @@ -386,7 +386,7 @@ private: #define UPX_F_VMLINUX_PPC64LE 40 #define UPX_F_DYLIB_PPC64LE 41 -#define UPX_F_PLAIN_TEXT 127 +#define UPX_F_PLAIN_TEXT 127 // FIXME: what is this ?? #define UPX_F_ATARI_TOS 129 #define UPX_F_SOLARIS_SPARC 130 diff --git a/src/packer.cpp b/src/packer.cpp index 2ea0dc10..56ea0b2b 100644 --- a/src/packer.cpp +++ b/src/packer.cpp @@ -62,7 +62,7 @@ Packer::~Packer() void Packer::assertPacker() const { assert(getFormat() > 0); - assert(getFormat() <= 255); + assert(getFormat() < 255); assert(getVersion() >= 11); assert(getVersion() <= 14); assert(strlen(getName()) <= 15); @@ -71,6 +71,16 @@ void Packer::assertPacker() const assert(strlen(getFullName(NULL)) <= 32); if (bele == NULL) fprintf(stderr, "%s\n", getName()); assert(bele != NULL); + if (getFormat() != UPX_F_MACH_FAT) // macho/fat is multiarch + { + const N_BELE_RTP::AbstractPolicy *format_bele; + if (getFormat() < 128) + format_bele = &N_BELE_RTP::le_policy; + else + format_bele = &N_BELE_RTP::be_policy; + if (bele != format_bele) fprintf(stderr, "%s\n", getName()); + assert(bele == format_bele); + } #if 1 Linker *l = newLinker(); if (bele != l->bele) fprintf(stderr, "%s\n", getName());