Commit b0033e5fd67b922187053af296e53f2899b46cc9
1 parent
40c14afb
do not log error if in json mode -- error info is in json-output and return code
Showing
1 changed file
with
10 additions
and
9 deletions
oletools/olevba.py
| ... | ... | @@ -2970,14 +2970,14 @@ def main(): |
| 2970 | 2970 | if isinstance(data, PathNotFoundException): |
| 2971 | 2971 | if options.output_mode in ('triage', 'unspecified'): |
| 2972 | 2972 | print '%-12s %s - File not found' % ('?', filename) |
| 2973 | - else: | |
| 2973 | + elif options.output_mode != 'json': | |
| 2974 | 2974 | log.error('Given path %r does not exist!' % filename) |
| 2975 | 2975 | return_code = RETURN_FILE_NOT_FOUND if return_code == 0 \ |
| 2976 | 2976 | else RETURN_SEVERAL_ERRS |
| 2977 | 2977 | else: |
| 2978 | 2978 | if options.output_mode in ('triage', 'unspecified'): |
| 2979 | 2979 | print '%-12s %s - Failed to read from zip file %s' % ('?', filename, container) |
| 2980 | - else: | |
| 2980 | + elif options.output_mode != 'json': | |
| 2981 | 2981 | log.error('Exception opening/reading %r from zip file %r: %s' |
| 2982 | 2982 | % (filename, container, data)) |
| 2983 | 2983 | return_code = RETURN_XGLOB_ERR if return_code == 0 \ |
| ... | ... | @@ -3020,23 +3020,23 @@ def main(): |
| 3020 | 3020 | except FileOpenError as exc: |
| 3021 | 3021 | if options.output_mode in ('triage', 'unspecified'): |
| 3022 | 3022 | print '%-12s %s - File format not supported' % ('?', filename) |
| 3023 | - else: | |
| 3024 | - log.exception('Failed to open %s -- probably not supported!' % filename) | |
| 3025 | - if options.output_mode == 'json': | |
| 3023 | + elif options.output_mode == 'json': | |
| 3026 | 3024 | print_json(file=filename, type='error', |
| 3027 | 3025 | error=type(exc).__name__, message=str(exc)) |
| 3026 | + else: | |
| 3027 | + log.exception('Failed to open %s -- probably not supported!' % filename) | |
| 3028 | 3028 | return_code = RETURN_OPEN_ERROR if return_code == 0 \ |
| 3029 | 3029 | else RETURN_SEVERAL_ERRS |
| 3030 | 3030 | except ProcessingError as exc: |
| 3031 | 3031 | if options.output_mode in ('triage', 'unspecified'): |
| 3032 | 3032 | print '%-12s %s - %s' % ('!ERROR', filename, exc.orig_exception) |
| 3033 | - else: | |
| 3034 | - log.exception('Error processing file %s (%s)!' | |
| 3035 | - % (filename, exc.orig_exception)) | |
| 3036 | - if options.output_mode == 'json': | |
| 3033 | + elif options.output_mode == 'json': | |
| 3037 | 3034 | print_json(file=filename, type='error', |
| 3038 | 3035 | error=type(exc).__name__, |
| 3039 | 3036 | message=str(exc.orig_exception)) |
| 3037 | + else: | |
| 3038 | + log.exception('Error processing file %s (%s)!' | |
| 3039 | + % (filename, exc.orig_exception)) | |
| 3040 | 3040 | return_code = RETURN_PARSE_ERROR if return_code == 0 \ |
| 3041 | 3041 | else RETURN_SEVERAL_ERRS |
| 3042 | 3042 | finally: |
| ... | ... | @@ -3064,6 +3064,7 @@ def main(): |
| 3064 | 3064 | except Exception as exc: |
| 3065 | 3065 | # some unexpected error, maybe some of the types caught in except clauses |
| 3066 | 3066 | # above were not sufficient. This is very bad, so log complete trace at exception level |
| 3067 | + # and do not care about output mode | |
| 3067 | 3068 | log.exception('Unhandled exception in main: %s' % exc, exc_info=True) |
| 3068 | 3069 | return_code = RETURN_UNEXPECTED # even if there were others before -- this is more important |
| 3069 | 3070 | ... | ... |