Commit 2bd665ad593f2f43e4c52521c4df24f2361b44f1

Authored by Christian Herdtweck
1 parent 90f25d4c

msodde: avoid misleading stack traces from fail in except block

Showing 1 changed file with 14 additions and 11 deletions
oletools/msodde.py
@@ -818,20 +818,23 @@ def process_file(filepath, field_filter_mode=None): @@ -818,20 +818,23 @@ def process_file(filepath, field_filter_mode=None):
818 return process_xls(filepath) 818 return process_xls(filepath)
819 else: 819 else:
820 return process_doc(filepath) 820 return process_doc(filepath)
821 - else:  
822 - with open(filepath, 'rb') as file_handle:  
823 - if file_handle.read(4) == RTF_START:  
824 - # This is a RTF file  
825 - return process_rtf(file_handle, field_filter_mode) 821 +
  822 + with open(filepath, 'rb') as file_handle:
  823 + if file_handle.read(4) == RTF_START:
  824 + # This is a RTF file
  825 + return process_rtf(file_handle, field_filter_mode)
  826 +
826 try: 827 try:
827 doctype = ooxml.get_type(filepath) 828 doctype = ooxml.get_type(filepath)
828 - log.debug('Detected file type: {0}'.format(doctype))  
829 - if doctype == ooxml.DOCTYPE_EXCEL:  
830 - return process_xlsx(filepath, field_filter_mode)  
831 - else:  
832 - return process_docx(filepath, field_filter_mode)  
833 except Exception: 829 except Exception:
834 log.debug('Exception trying to xml-parse file', exc_info=True) 830 log.debug('Exception trying to xml-parse file', exc_info=True)
  831 + doctype = None
  832 +
  833 + if doctype:
  834 + log.debug('Detected file type: {0}'.format(doctype))
  835 + if doctype == ooxml.DOCTYPE_EXCEL:
  836 + return process_xlsx(filepath, field_filter_mode)
  837 + else:
835 return process_docx(filepath, field_filter_mode) 838 return process_docx(filepath, field_filter_mode)
836 839
837 840
@@ -881,7 +884,7 @@ def main(cmd_line_args=None): @@ -881,7 +884,7 @@ def main(cmd_line_args=None):
881 jout.append(dict(type='error', error=type(exc).__name__, 884 jout.append(dict(type='error', error=type(exc).__name__,
882 message=str(exc))) # strange: str(exc) is enclosed in "" 885 message=str(exc))) # strange: str(exc) is enclosed in ""
883 else: 886 else:
884 - raise 887 + raise # re-raise last known exception, keeping trace intact
885 888
886 if args.json: 889 if args.json:
887 for line in text.splitlines(): 890 for line in text.splitlines():