Skip to content
Snippets Groups Projects
Commit 574dafe1 authored by Jan Philipp Timme's avatar Jan Philipp Timme
Browse files

Fix uncaught exceptions while decoding

parent 894e8627
No related branches found
No related tags found
No related merge requests found
...@@ -32,7 +32,12 @@ def get_decoded_header(value): ...@@ -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:
try:
decoded_item = item[0].decode(item[1], 'ignore') if item[1] is not None else item[0] 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(): ...@@ -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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment