Commit 55d99269179807bb918c76e658f41035bddc536d
1 parent
f7a39579
olevba: close() the VBA_Parser
So glad we have the unittests, otherwise would never have found this
Showing
1 changed file
with
6 additions
and
0 deletions
oletools/olevba.py
| @@ -4474,6 +4474,8 @@ def process_file(filename, data, container, options, crypto_nesting=0): | @@ -4474,6 +4474,8 @@ def process_file(filename, data, container, options, crypto_nesting=0): | ||
| 4474 | Returns a single code summarizing the status of processing of this file | 4474 | Returns a single code summarizing the status of processing of this file |
| 4475 | """ | 4475 | """ |
| 4476 | try: | 4476 | try: |
| 4477 | + vba_parser = None | ||
| 4478 | + | ||
| 4477 | # Open the file | 4479 | # Open the file |
| 4478 | vba_parser = VBA_Parser_CLI(filename, data=data, container=container, | 4480 | vba_parser = VBA_Parser_CLI(filename, data=data, container=container, |
| 4479 | relaxed=options.relaxed, | 4481 | relaxed=options.relaxed, |
| @@ -4501,6 +4503,7 @@ def process_file(filename, data, container, options, crypto_nesting=0): | @@ -4501,6 +4503,7 @@ def process_file(filename, data, container, options, crypto_nesting=0): | ||
| 4501 | no_xlm=options.no_xlm)) | 4503 | no_xlm=options.no_xlm)) |
| 4502 | else: # (should be impossible) | 4504 | else: # (should be impossible) |
| 4503 | raise ValueError('unexpected output mode: "{0}"!'.format(options.output_mode)) | 4505 | raise ValueError('unexpected output mode: "{0}"!'.format(options.output_mode)) |
| 4506 | + vba_parser.close() | ||
| 4504 | 4507 | ||
| 4505 | # even if processing succeeds, file might still be encrypted | 4508 | # even if processing succeeds, file might still be encrypted |
| 4506 | log.debug('Checking for encryption (normal)') | 4509 | log.debug('Checking for encryption (normal)') |
| @@ -4508,6 +4511,9 @@ def process_file(filename, data, container, options, crypto_nesting=0): | @@ -4508,6 +4511,9 @@ def process_file(filename, data, container, options, crypto_nesting=0): | ||
| 4508 | log.debug('no encryption detected') | 4511 | log.debug('no encryption detected') |
| 4509 | return RETURN_OK | 4512 | return RETURN_OK |
| 4510 | except Exception as exc: | 4513 | except Exception as exc: |
| 4514 | + if vba_parser: | ||
| 4515 | + vba_parser.close() | ||
| 4516 | + | ||
| 4511 | log.debug('Checking for encryption (after exception)') | 4517 | log.debug('Checking for encryption (after exception)') |
| 4512 | if crypto.is_encrypted(filename): | 4518 | if crypto.is_encrypted(filename): |
| 4513 | pass # deal with this below | 4519 | pass # deal with this below |