When injecting a message locally in non-SMTP mode, and with MIME ACLs
configured, if the ACL rejected the message, Exim would try to
`fprintf(NULL, "%s", the_message)`. This fixes that.
Most ACLs are plumbed in SMTP-only and looking through the others in
receive.c, they all appear to be safely guarded, so it was just this one
that slipped through.
Crash report and assistance tracking down the root cause from Warren
Baker.
It's SecureTransport, so affects any MacOS clients which use the
system-integrated TLS libraries, including email clients.
It's SecureTransport, so affects any MacOS clients which use the
system-integrated TLS libraries, including email clients.
+PP/24 Fix segfault from trying to fprintf() to a NULL stdio FILE* if
+ using a MIME ACL for non-SMTP local injection.
+ Report and assistance in diagnosis by Warren Baker.
+
Exim version 4.80.1
-------------------
Exim version 4.80.1
-------------------
Patch fixing NUL term/init of DKIM strings
Patch fixing dnsdb TXT record handling for DKIM
Patch speeding up DomainKeys signing
Patch fixing NUL term/init of DKIM strings
Patch fixing dnsdb TXT record handling for DKIM
Patch speeding up DomainKeys signing
+Warren Baker Found crash with MIME ACLs in non-SMTP local injection
Dmitry Banschikov Path to check for LDAP TLS initialisation errors
René Berber Pointed out mistake in build instructions for QNX
Johannes Berg Maintained dynamically loadable module code out-of-tree
Dmitry Banschikov Path to check for LDAP TLS initialisation errors
René Berber Pointed out mistake in build instructions for QNX
Johannes Berg Maintained dynamically loadable module code out-of-tree
#ifdef EXPERIMENTAL_DCC
dcc_ok = 0;
#endif
#ifdef EXPERIMENTAL_DCC
dcc_ok = 0;
#endif
- if (smtp_handle_acl_fail(ACL_WHERE_MIME, rc, user_msg, log_msg) != 0)
+ if (smtp_input && smtp_handle_acl_fail(ACL_WHERE_MIME, rc, user_msg, log_msg) != 0) {
*smtp_yield_ptr = FALSE; /* No more messsages after dropped connection */
*smtp_yield_ptr = FALSE; /* No more messsages after dropped connection */
- *smtp_reply_ptr = US""; /* Indicate reply already sent */
+ *smtp_reply_ptr = US""; /* Indicate reply already sent */
+ }
message_id[0] = 0; /* Indicate no message accepted */
return FALSE; /* Cause skip to end of receive function */
}
message_id[0] = 0; /* Indicate no message accepted */
return FALSE; /* Cause skip to end of receive function */
}