git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ACL: Enforce non-usability of control=utf8_downconvert in MAIL ACL. Bug 2239
[exim.git]
/
src
/
src
/
acl.c
diff --git
a/src/src/acl.c
b/src/src/acl.c
index 9efc85844ca484d02f5c3040fb31848ed6cf4dc4..fb8b75bc7b28c72e489b465c83de23336f50a900 100644
(file)
--- a/
src/src/acl.c
+++ b/
src/src/acl.c
@@
-2,7
+2,7
@@
* Exim - an Internet mail transport agent *
*************************************************/
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 201
7
*/
+/* Copyright (c) University of Cambridge 1995 - 201
8
*/
/* See the file NOTICE for conditions of use and distribution. */
/* Code for handling Access Control Lists (ACLs) */
/* See the file NOTICE for conditions of use and distribution. */
/* Code for handling Access Control Lists (ACLs) */
@@
-523,7
+523,8
@@
static control_def controls_list[] = {
},
#ifdef SUPPORT_I18N
[CONTROL_UTF8_DOWNCONVERT] =
},
#ifdef SUPPORT_I18N
[CONTROL_UTF8_DOWNCONVERT] =
- { US"utf8_downconvert", TRUE, 0 }
+ { US"utf8_downconvert", TRUE, (unsigned) ~(ACL_BIT_RCPT | ACL_BIT_VRFY)
+ }
#endif
};
#endif
};
@@
-3251,6
+3252,8
@@
for (; cb != NULL; cb = cb->next)
break;
case CONTROL_CUTTHROUGH_DELIVERY:
break;
case CONTROL_CUTTHROUGH_DELIVERY:
+ {
+ uschar * ignored = NULL;
#ifndef DISABLE_PRDR
if (prdr_requested)
#else
#ifndef DISABLE_PRDR
if (prdr_requested)
#else
@@
-3259,20
+3262,20
@@
for (; cb != NULL; cb = cb->next)
/* Too hard to think about for now. We might in future cutthrough
the case where both sides handle prdr and this-node prdr acl
is "accept" */
/* Too hard to think about for now. We might in future cutthrough
the case where both sides handle prdr and this-node prdr acl
is "accept" */
-
*log_msgptr = string_sprintf("PRDR on %s reception\n", arg)
;
+
ignored = US"PRDR active"
;
else
{
if (deliver_freeze)
else
{
if (deliver_freeze)
-
*log_msgptr
= US"frozen";
+
ignored
= US"frozen";
else if (queue_only_policy)
else if (queue_only_policy)
-
*log_msgptr
= US"queue-only";
+
ignored
= US"queue-only";
else if (fake_response == FAIL)
else if (fake_response == FAIL)
-
*log_msgptr
= US"fakereject";
+
ignored
= US"fakereject";
else
{
if (rcpt_count == 1)
{
else
{
if (rcpt_count == 1)
{
- cutthrough.delivery = TRUE;
+ cutthrough.delivery = TRUE;
/* control accepted */
while (*p == '/')
{
const uschar * pp = p+1;
while (*p == '/')
{
const uschar * pp = p+1;
@@
-3288,13
+3291,13
@@
for (; cb != NULL; cb = cb->next)
}
}
else
}
}
else
- DEBUG(D_acl) debug_printf(" cutthrough request ignored for nonfirst rcpt\n");
- break;
+ ignored = US"nonfirst rcpt";
}
}
- *log_msgptr = string_sprintf("\"control=%s\" on %s item",
- arg, *log_msgptr);
}
}
- return ERROR;
+ DEBUG(D_acl) if (ignored)
+ debug_printf(" cutthrough request ignored on %s item\n", ignored);
+ }
+ break;
#ifdef SUPPORT_I18N
case CONTROL_UTF8_DOWNCONVERT:
#ifdef SUPPORT_I18N
case CONTROL_UTF8_DOWNCONVERT: