Commit 38418c290e3655ed70cc9bb5ad56a96cf446d114
1 parent
e90e0e5a
record_base: rename parse --> finish_constructing, more docu
Showing
1 changed file
with
13 additions
and
3 deletions
oletools/record_base.py
| @@ -258,15 +258,25 @@ class OleRecordBase(object): | @@ -258,15 +258,25 @@ class OleRecordBase(object): | ||
| 258 | self.size = size | 258 | self.size = size |
| 259 | self.pos = pos | 259 | self.pos = pos |
| 260 | self.data = data | 260 | self.data = data |
| 261 | - self.parse(more_data) | 261 | + self.finish_constructing(more_data) |
| 262 | 262 | ||
| 263 | - def parse(self, more_data): | 263 | + def finish_constructing(self, more_data): |
| 264 | """ finish constructing this record | 264 | """ finish constructing this record |
| 265 | 265 | ||
| 266 | Can save more_data from OleRecordStream.read_record_head and/or parse | 266 | Can save more_data from OleRecordStream.read_record_head and/or parse |
| 267 | data (if it was read). | 267 | data (if it was read). |
| 268 | 268 | ||
| 269 | Base implementation, does nothing. To be overwritten in subclasses. | 269 | Base implementation, does nothing. To be overwritten in subclasses. |
| 270 | + | ||
| 271 | + Implementations should take into account that self.data may be None. | ||
| 272 | + Should create the same attributes, whether data is present or not. Eg:: | ||
| 273 | + | ||
| 274 | + def finish_constructing(self, more_data): | ||
| 275 | + self.more = more_data | ||
| 276 | + self.attr1 = None | ||
| 277 | + self.attr2 = None | ||
| 278 | + if self.data: | ||
| 279 | + self.attr1, self.attr2 = struct.unpack('<HH', self.data) | ||
| 270 | """ | 280 | """ |
| 271 | pass | 281 | pass |
| 272 | 282 | ||
| @@ -324,7 +334,7 @@ def test(filenames, ole_file_class=OleRecordFile, | @@ -324,7 +334,7 @@ def test(filenames, ole_file_class=OleRecordFile, | ||
| 324 | logging.info(' parse ' + str(stream)) | 334 | logging.info(' parse ' + str(stream)) |
| 325 | try: | 335 | try: |
| 326 | for record in stream.iter_records(): | 336 | for record in stream.iter_records(): |
| 327 | - logging.info(' found ' + str(record)) | 337 | + logging.info(' ' + str(record)) |
| 328 | do_per_record(record) | 338 | do_per_record(record) |
| 329 | except Exception: | 339 | except Exception: |
| 330 | if not must_parse: | 340 | if not must_parse: |