from .sections import Section
from .segments import Segment
+from ..common.exceptions import ELFError
from ..common.utils import struct_parse
from .enums import ENUM_D_TAG
'DT_SUNW_FILTER'])
def __init__(self, entry, stringtable):
+ if stringtable is None:
+ raise ELFError('Creating DynamicTag without string table')
self.entry = entry
if entry.d_tag in self._HANDLED_TAGS:
setattr(self, entry.d_tag[3:].lower(),
# So we must look for the dynamic section contained in the dynamic
# segment, we do so by searching for the dynamic section whose content
# is located at the same offset as the dynamic segment
+ stringtable = None
for section in elffile.iter_sections():
if (isinstance(section, DynamicSection) and
section['sh_offset'] == header['p_offset']):
--- /dev/null
+#-------------------------------------------------------------------------------
+# elftools tests
+#
+# Eli Bendersky (eliben@gmail.com)
+# This code is in the public domain
+#-------------------------------------------------------------------------------
+try:
+ import unittest2 as unittest
+except ImportError:
+ import unittest
+import os
+
+from utils import setup_syspath; setup_syspath()
+from elftools.common.exceptions import ELFError
+from elftools.elf.dynamic import DynamicTag
+
+
+class TestDynamicTag(unittest.TestCase):
+ def test_requires_stringtable(self):
+ with self.assertRaises(ELFError):
+ dt = DynamicTag('', None)
+
+
+if __name__ == '__main__':
+ unittest.main()