Commit 6463d8b8c05620593c763ff5bfdd46398bab972b
1 parent
730f64f5
handle new exceptions in main
Showing
1 changed file
with
14 additions
and
0 deletions
oletools/olevba.py
| @@ -2959,6 +2959,8 @@ class VBA_Parser_CLI(VBA_Parser): | @@ -2959,6 +2959,8 @@ class VBA_Parser_CLI(VBA_Parser): | ||
| 2959 | print self.reveal() | 2959 | print self.reveal() |
| 2960 | else: | 2960 | else: |
| 2961 | print 'No VBA macros found.' | 2961 | print 'No VBA macros found.' |
| 2962 | + except OlevbaBaseException: | ||
| 2963 | + raise | ||
| 2962 | except Exception as exc: | 2964 | except Exception as exc: |
| 2963 | # display the exception with full stack trace for debugging | 2965 | # display the exception with full stack trace for debugging |
| 2964 | log.info('Error processing file %s (%s)' % (self.filename, exc)) | 2966 | log.info('Error processing file %s (%s)' % (self.filename, exc)) |
| @@ -3261,6 +3263,18 @@ def main(): | @@ -3261,6 +3263,18 @@ def main(): | ||
| 3261 | raise ValueError('unexpected output mode: "{0}"!'.format(options.output_mode)) | 3263 | raise ValueError('unexpected output mode: "{0}"!'.format(options.output_mode)) |
| 3262 | count += 1 | 3264 | count += 1 |
| 3263 | 3265 | ||
| 3266 | + except (SubstreamOpenError, UnexpectedDataError) as exc: | ||
| 3267 | + if options.output_mode in ('triage', 'unspecified'): | ||
| 3268 | + print '%-12s %s - Error opening substream or uenxpected ' \ | ||
| 3269 | + 'content' % ('?', filename) | ||
| 3270 | + elif options.output_mode == 'json': | ||
| 3271 | + print_json(file=filename, type='error', | ||
| 3272 | + error=type(exc).__name__, message=str(exc)) | ||
| 3273 | + else: | ||
| 3274 | + log.exception('Error opening substream or unexpected ' | ||
| 3275 | + 'content in %s' % filename) | ||
| 3276 | + return_code = RETURN_OPEN_ERROR if return_code == 0 \ | ||
| 3277 | + else RETURN_SEVERAL_ERRS | ||
| 3264 | except FileOpenError as exc: | 3278 | except FileOpenError as exc: |
| 3265 | if options.output_mode in ('triage', 'unspecified'): | 3279 | if options.output_mode in ('triage', 'unspecified'): |
| 3266 | print '%-12s %s - File format not supported' % ('?', filename) | 3280 | print '%-12s %s - File format not supported' % ('?', filename) |