I noticed this bug while trying to package ropper 1.8.0 via the ropper test suite sashs/Ropper#18.
Please also maybe consider adding some unit tests for this project directly to make it able to test for regressions before any release.
PS: the tests were running on i686 (32bit) because of the packaging process
ERROR: test_gadgets (testcases.test_x86_64.MACHO_x86_84)
Traceback (most recent call last):
File "/build/ropper/src/Ropper-1.8.0/testcases/test_x86_64.py", line 132, in setUp
self.file = Loader.open('test-binaries/ls-macho-x86_64')
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 154, in open
return subclass(fileName)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 33, in init
super(MachO, self).init(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 72, in init
self.binary = self._loadFile(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 92, in _loadFile
return macho.MachO(fileName)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 328, in __init
self.__loadCommands = self._parseLoadCommands(self._bytes, self.machHeader)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 384, in _parseLoadCommands
command = self.__parseSegmentCommand(data, offset, raw)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 404, in __parseSegmentCommand
sections = self.__parseSections(data, sc, offset+sizeof(self._classes.SegmentCommand))
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 442, in __parseSections
raw = (c_ubyte * sec.size).from_buffer(data, sec.offset)
OverflowError: cannot fit 'int' into an index-sized integer
ERROR: test_general (testcases.test_x86_64.MACHO_x86_84)
Traceback (most recent call last):
File "/build/ropper/src/Ropper-1.8.0/testcases/test_x86_64.py", line 132, in setUp
self.file = Loader.open('test-binaries/ls-macho-x86_64')
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 154, in open
return subclass(fileName)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 33, in init
super(MachO, self).init(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 72, in init
self.binary = self._loadFile(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 92, in _loadFile
return macho.MachO(fileName)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 328, in __init
self.__loadCommands = self._parseLoadCommands(self._bytes, self.machHeader)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 384, in _parseLoadCommands
command = self.__parseSegmentCommand(data, offset, raw)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 404, in __parseSegmentCommand
sections = self.__parseSections(data, sc, offset+sizeof(self._classes.SegmentCommand))
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 442, in __parseSections
raw = (c_ubyte * sec.size).from_buffer(data, sec.offset)
OverflowError: cannot fit 'int' into an index-sized integer
ERROR: test_jmpreg (testcases.test_x86_64.MACHO_x86_84)
Traceback (most recent call last):
File "/build/ropper/src/Ropper-1.8.0/testcases/test_x86_64.py", line 132, in setUp
self.file = Loader.open('test-binaries/ls-macho-x86_64')
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 154, in open
return subclass(fileName)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 33, in init
super(MachO, self).init(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 72, in init
self.binary = self._loadFile(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 92, in _loadFile
return macho.MachO(fileName)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 328, in __init
self.__loadCommands = self._parseLoadCommands(self._bytes, self.machHeader)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 384, in _parseLoadCommands
command = self.__parseSegmentCommand(data, offset, raw)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 404, in __parseSegmentCommand
sections = self.__parseSections(data, sc, offset+sizeof(self._classes.SegmentCommand))
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 442, in __parseSections
raw = (c_ubyte * sec.size).from_buffer(data, sec.offset)
OverflowError: cannot fit 'int' into an index-sized integer
ERROR: test_ppr (testcases.test_x86_64.MACHO_x86_84)
Traceback (most recent call last):
File "/build/ropper/src/Ropper-1.8.0/testcases/test_x86_64.py", line 132, in setUp
self.file = Loader.open('test-binaries/ls-macho-x86_64')
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 154, in open
return subclass(fileName)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 33, in init
super(MachO, self).init(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/loader.py", line 72, in init
self.binary = self._loadFile(filename)
File "/build/ropper/src/Ropper-1.8.0/ropper/loaders/mach_o.py", line 92, in _loadFile
return macho.MachO(fileName)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 328, in __init
self.__loadCommands = self._parseLoadCommands(self._bytes, self.machHeader)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 384, in _parseLoadCommands
command = self.__parseSegmentCommand(data, offset, raw)
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 404, in __parseSegmentCommand
sections = self.__parseSections(data, sc, offset+sizeof(self._classes.SegmentCommand))
File "/usr/lib/python3.5/site-packages/filebytes/mach_o.py", line 442, in __parseSections
raw = (c_ubyte * sec.size).from_buffer(data, sec.offset)
OverflowError: cannot fit 'int' into an index-sized integer
Ran 35 tests in 64.721s
FAILED (errors=4)