[exim-dev] [Bug 1630] New: EXPERIMENTAL_DSN SIGSEGV

Top Page
Delete this message
Reply to this message
Author: admin
Date:  
To: exim-dev
New-Topics: [exim-dev] [Bug 1630] EXPERIMENTAL_DSN SIGSEGV
Subject: [exim-dev] [Bug 1630] New: EXPERIMENTAL_DSN SIGSEGV
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.