diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index 5abe6a6e2d35cbf73d9dae15e5498f8c050f6a10..021503baf2d053a3064c1fc5d40c2c186c1e063a 100644 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -1164,6 +1164,16 @@ class RamDump(): field)) return None + def read_structure_cstring(self, addr_or_name, struct_name, field, + max_length=100): + """reads a C string from a structure field. The C string field will be + dereferenced before reading, so it should be a `char *', not a + `char []'. + """ + virt = self.resolve_virt(addr_or_name) + cstring_addr = virt + self.field_offset(struct_name, field) + return self.read_cstring(self.read_pointer(cstring_addr), max_length) + def read_cstring(self, addr_or_name, max_length, virtual=True, cpu=None): addr = addr_or_name if virtual: