Fix uncaught exceptions while decoding

This commit is contained in:
Jan Philipp Timme 2020-04-14 11:42:13 +02:00
parent 894e862720
commit 574dafe14a

15
main.py
View File

@ -32,7 +32,12 @@ def get_decoded_header(value):
decoded_header_items = decode_header(value) decoded_header_items = decode_header(value)
decoded_header_value = '' decoded_header_value = ''
for item in decoded_header_items: for item in decoded_header_items:
decoded_item = item[0].decode(item[1], 'ignore') if item[1] is not None else item[0] try:
decoded_item = item[0].decode(item[1], 'ignore') if item[1] is not None else item[0]
except:
logger.warning(f"Decoding went wrong for value '{value}'!")
# Pretend decoded item is empty :-(
decoded_item = ''
if isinstance(decoded_item, bytes): if isinstance(decoded_item, bytes):
decoded_item = decoded_item.decode('ascii', 'ignore') decoded_item = decoded_item.decode('ascii', 'ignore')
decoded_header_value += decoded_item decoded_header_value += decoded_item
@ -121,6 +126,14 @@ def main():
Milter.runmilter("SuspiciousFromMilter", config.milter_socket, config.milter_timeout, rmsock=False) Milter.runmilter("SuspiciousFromMilter", config.milter_socket, config.milter_timeout, rmsock=False)
logger.info(f"Milter finished running.") logger.info(f"Milter finished running.")
def test():
# simple method to deal with unexpected exceptions on the fly :(
test_from_value = '=?UNKNOWN?Q?Nat=E1lia?= Reis via DBWorld <dbworld@cs.wisc.edu>'
logger.info(f"Begin of test().")
test_instance = SuspiciousFrom()
test_instance.header('from', test_from_value)
logger.info(f"End of test().")
if __name__ == "__main__": if __name__ == "__main__":
#test()
main() main()