mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-09-21 07:01:57 +00:00
binman: Add a way to check for a valid ELF file
Add a function which checks whether data is in ELF format or not. This will be used by binman to check this for entries. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
c8c9f3108a
commit
39f4a85bb2
2 changed files with 25 additions and 0 deletions
|
@ -518,3 +518,18 @@ def read_loadable_segments(data):
|
|||
rend = start + segment['p_filesz']
|
||||
segments.append((i, segment['p_paddr'], data[start:rend]))
|
||||
return segments, entry
|
||||
|
||||
def is_valid(data):
|
||||
"""Check if some binary data is a valid ELF file
|
||||
|
||||
Args:
|
||||
data (bytes): Bytes to check
|
||||
|
||||
Returns:
|
||||
bool: True if a valid Elf file, False if not
|
||||
"""
|
||||
try:
|
||||
DecodeElf(data, 0)
|
||||
return True
|
||||
except ELFError:
|
||||
return False
|
||||
|
|
|
@ -348,6 +348,16 @@ class TestElf(unittest.TestCase):
|
|||
finally:
|
||||
elf.ELF_TOOLS = old_val
|
||||
|
||||
def test_is_valid(self):
|
||||
"""Test is_valid()"""
|
||||
self.assertEqual(False, elf.is_valid(b''))
|
||||
self.assertEqual(False, elf.is_valid(b'1234'))
|
||||
|
||||
fname = self.ElfTestFile('elf_sections')
|
||||
data = tools.read_file(fname)
|
||||
self.assertEqual(True, elf.is_valid(data))
|
||||
self.assertEqual(False, elf.is_valid(data[4:]))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in a new issue