https://bugs.exim.org/show_bug.cgi?id=1630
Bug ID: 1630 Summary: EXPERIMENTAL_DSN SIGSEGV Product: Exim Version: 4.85 Hardware: x86-64 OS: Linux Status: NEW Severity: bug Priority: medium Component: Delivery in general Assignee: ni...@exim.org Reporter: wbre...@gmx.net CC: exim-dev@exim.org Created attachment 810 --> https://bugs.exim.org/attachment.cgi?id=810&action=edit fix SIGSEGV and use addr->user_message if addr->message not defined deliver.c:print_dsn_diagnostic_code() starts with /* check host_used, af_pass_message flag and addr->message for safety reasons */ if (!addr->host_used && testflag(addr, af_pass_message) && addr->message) return; which is wrong and should at least be: /* check host_used, af_pass_message flag and addr->message for safety reasons */ if (!addr->host_used && testflag(addr, af_pass_message) && !addr->message) return; This causes SIGSEGV in case a message is deferred by "connection timed out" and similar cases in which no SMTP answer is available in addr->message. The question is if we should use addr->user_message in this case as print_address_error() does. I found an example in RFC 1894 using: Diagnostic-Code: smtp; 426 connection timed out Currently I'm testing the attached patch which adds 426 and addr->user_message in case addr->message is not available. It returns without adding the Diagnostic-Code header in case both are unavailable. -- You are receiving this mail because: You are on the CC list for the bug. -- ## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim details at http://www.exim.org/ ##