[Object, MachO] Don't crash on incomplete MachO segment load commands.

Report proper error code from MachOObjectFile constructor if we
can't parse another segment load command (we already return a proper
error if segment load command contents is suspicious).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239109 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alexey Samsonov
2015-06-04 22:26:44 +00:00
parent bc81286cac
commit 62d21d2b1a
3 changed files with 7 additions and 1 deletions

View File

@ -207,7 +207,10 @@ static std::error_code parseSegmentLoadCommand(
const unsigned SegmentLoadSize = sizeof(SegmentCmd);
if (Load.C.cmdsize < SegmentLoadSize)
return object_error::macho_load_segment_too_small;
SegmentCmd S = getStruct<SegmentCmd>(Obj, Load.Ptr);
auto SegOrErr = getStructOrErr<SegmentCmd>(Obj, Load.Ptr);
if (!SegOrErr)
return SegOrErr.getError();
SegmentCmd S = SegOrErr.get();
const unsigned SectionSize =
Obj->is64Bit() ? sizeof(MachO::section_64) : sizeof(MachO::section);
if (S.nsects > std::numeric_limits<uint32_t>::max() / SectionSize ||