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
Rename EXPERIMENTAL_SRS to EXPERIMENTAL_SRS_ALT
[exim.git]
/
src
/
src
/
verify.c
diff --git
a/src/src/verify.c
b/src/src/verify.c
index cd9df1f71b81eef70d8c718a0ecf7b80010ee8f1..76f6c91673bd8cebc91f0466c208d3360a8e2c37 100644
(file)
--- a/
src/src/verify.c
+++ b/
src/src/verify.c
@@
-3,6
+3,7
@@
*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2020 */
/* See the file NOTICE for conditions of use and distribution. */
/* Functions concerned with verifying things. The original code for callout
/* See the file NOTICE for conditions of use and distribution. */
/* Functions concerned with verifying things. The original code for callout
@@
-2155,7
+2156,7
@@
for (addr_list = addr_local, i = 0; i < 2; addr_list = addr_remote, i++)
addr_list = addr->next;
fprintf(fp, "%s", CS addr->address);
addr_list = addr->next;
fprintf(fp, "%s", CS addr->address);
-#ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS
_ALT
if(addr->prop.srs_sender)
fprintf(fp, " [srs = %s]", addr->prop.srs_sender);
#endif
if(addr->prop.srs_sender)
fprintf(fp, " [srs = %s]", addr->prop.srs_sender);
#endif
@@
-2909,7
+2910,6
@@
provided that host name matching is permitted; if it's "@[]" match against the
local host's IP addresses. */
if (*ss == '@')
local host's IP addresses. */
if (*ss == '@')
- {
if (ss[1] == 0)
{
if (isiponly) return ERROR;
if (ss[1] == 0)
{
if (isiponly) return ERROR;
@@
-2921,7
+2921,6
@@
if (*ss == '@')
if (Ustrcmp(ip->address, cb->host_address) == 0) return OK;
return FAIL;
}
if (Ustrcmp(ip->address, cb->host_address) == 0) return OK;
return FAIL;
}
- }
/* If the pattern is an IP address, optionally followed by a bitmask count, do
a (possibly masked) comparison with the current IP address. */
/* If the pattern is an IP address, optionally followed by a bitmask count, do
a (possibly masked) comparison with the current IP address. */
@@
-2947,10
+2946,20
@@
if (*t == 0 || (*t == '/' && t != ss))
return ERROR;
}
return ERROR;
}
-/* See if there is a semicolon in the pattern */
+/* See if there is a semicolon in the pattern, separating a searchtype
+prefix. If there is one then check for comma-sep options. */
if ((semicolon = Ustrchr(ss, ';')))
if ((semicolon = Ustrchr(ss, ';')))
- endname = (opts = Ustrchr(ss, ',')) ? opts : semicolon;
+ if ((opts = Ustrchr(ss, ',')) && opts < semicolon)
+ {
+ endname = opts++;
+ opts = string_copyn(opts, semicolon - opts);
+ }
+ else
+ {
+ endname = semicolon;
+ opts = NULL;
+ }
/* If we are doing an IP address only match, then all lookups must be IP
address lookups, even if there is no "net-". */
/* If we are doing an IP address only match, then all lookups must be IP
address lookups, even if there is no "net-". */