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: nigel@???
Reporter: wbreyha@???
CC: exim-dev@???
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.