Silence some compiler warnings.

This commit is contained in:
Markus F.X.J. Oberhumer
2017-07-23 02:44:47 +02:00
parent b72e0f3060
commit ef8a7f330d
4 changed files with 20 additions and 18 deletions
+12 -10
View File
@@ -93,11 +93,13 @@ static const unsigned lc_segment[2] = {
//Mach_command::LC_SEGMENT_64
};
#if 0 // NOT USED
static const unsigned lc_routines[2] = {
0x11, 0x1a
//Mach_command::LC_ROUTINES,
//Mach_command::LC_ROUTINES_64
};
#endif
template <class T>
PackMachBase<T>::PackMachBase(InputFile *f, unsigned cputype, unsigned filetype,
@@ -459,7 +461,7 @@ PackMachBase<T>::buildMachLoader(
}
unsigned char const *const uncLoader = fold_hdrlen + fold;
unsigned char *const cprLoader = new unsigned char[sizeof(h) + h.sz_unc];
unsigned char *const cprLoader = New(unsigned char, sizeof(h) + h.sz_unc);
if (0 < szfold) {
unsigned sz_cpr = 0;
int r = upx_compress(uncLoader, h.sz_unc, sizeof(h) + cprLoader, &sz_cpr,
@@ -1509,7 +1511,7 @@ void PackMachBase<T>::unpack(OutputFile *fo)
if ((sizeof(mhdri) + sz_cmds) > (size_t)fi->st_size()) {
throwCantUnpack("file header corrupted");
}
rawmseg = (Mach_segment_command *)new char[sz_cmds];
rawmseg = (Mach_segment_command *) New(char, sz_cmds);
fi->readx(rawmseg, mhdri.sizeofcmds);
// FIXME forgot space left for LC_CODE_SIGNATURE;
@@ -1542,7 +1544,7 @@ void PackMachBase<T>::unpack(OutputFile *fo)
// Uncompress Macho headers
fi->readx(ibuf, ph.c_len);
Mach_header *const mhdr = (Mach_header *)new upx_byte[ph.u_len];
Mach_header *const mhdr = (Mach_header *) New(upx_byte, ph.u_len);
decompress(ibuf, (upx_byte *)mhdr, false);
if (mhdri.magic != mhdr->magic
|| mhdri.cputype != mhdr->cputype
@@ -1551,13 +1553,13 @@ void PackMachBase<T>::unpack(OutputFile *fo)
throwCantUnpack("file header corrupted");
unsigned const ncmds = mhdr->ncmds;
msegcmd = new Mach_segment_command[ncmds];
msegcmd = New(Mach_segment_command, ncmds);
unsigned char const *ptr = (unsigned char const *)(1+mhdr);
for (unsigned j= 0; j < ncmds; ++j) {
memcpy(&msegcmd[j], ptr, umin(sizeof(Mach_segment_command),
((Mach_command const *)ptr)->cmdsize));
ptr += (unsigned) ((Mach_segment_command const *)ptr)->cmdsize;
if ((unsigned)(ptr - (unsigned char const *)mhdr) > ph.u_len) {
if (ptr_udiff(ptr, mhdr) > ph.u_len) {
throwCantUnpack("cmdsize");
}
}
@@ -1643,7 +1645,7 @@ int PackMachBase<T>::canUnpack()
if (1024 < headway) {
infoWarning("Mach_header.sizeofcmds(%d) > 1024", headway);
}
rawmseg = (Mach_segment_command *)new char[(unsigned) mhdri.sizeofcmds];
rawmseg = (Mach_segment_command *) New(char, mhdri.sizeofcmds);
fi->readx(rawmseg, mhdri.sizeofcmds);
Mach_segment_command const *ptrTEXT = 0;
@@ -1680,7 +1682,7 @@ int PackMachBase<T>::canUnpack()
pos_next = segptr->filesize + segptr->fileoff;
if ((headway -= ptr->cmdsize) < 0) {
infoWarning("Mach_command[%u]{@%lu}.cmdsize = %u", j,
sizeof(mhdri) + mhdri.sizeofcmds - (headway + ptr->cmdsize),
(unsigned long) (sizeof(mhdri) + mhdri.sizeofcmds - (headway + ptr->cmdsize)),
(unsigned)ptr->cmdsize);
throwCantUnpack("sum(.cmdsize) exceeds .sizeofcmds");
}
@@ -1837,14 +1839,14 @@ bool PackMachBase<T>::canPack()
if (16384 < sz_mhcmds) { // somewhat arbitrary, but amd64-darwin.macho-upxmain.c
throwCantPack("16384 < Mach_header.sizeofcmds");
}
rawmseg = (Mach_segment_command *)new char[sz_mhcmds];
rawmseg = (Mach_segment_command *) New(char, sz_mhcmds);
fi->readx(rawmseg, mhdri.sizeofcmds);
unsigned const ncmds = mhdri.ncmds;
if (256 < ncmds) { // arbitrary, but guard against garbage
throwCantPack("256 < Mach_header.ncmds");
}
msegcmd = new Mach_segment_command[ncmds];
msegcmd = New(Mach_segment_command, ncmds);
unsigned char const *ptr = (unsigned char const *)rawmseg;
for (unsigned j= 0; j < ncmds; ++j) {
Mach_segment_command const *segptr = (Mach_segment_command const *)ptr;
@@ -1852,7 +1854,7 @@ bool PackMachBase<T>::canPack()
msegcmd[j] = *segptr;
if (!strcmp("__DATA", segptr->segname)) {
for (Mach_section_command const *secptr = (Mach_section_command const *)(1+ segptr);
((char const *)secptr - (char const *)segptr) < segptr->cmdsize;
ptr_udiff(secptr, segptr) < segptr->cmdsize;
++secptr
) {
if (sizeof(Addr) == secptr->size