git://git.exim.org
/
exim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ed0e982
)
Fix bug in new code for more ACL variables - even before release!
author
Philip Hazel
<ph10@hermes.cam.ac.uk>
Wed, 14 Dec 2005 14:50:12 +0000
(14:50 +0000)
committer
Philip Hazel
<ph10@hermes.cam.ac.uk>
Wed, 14 Dec 2005 14:50:12 +0000
(14:50 +0000)
src/src/expand.c
patch
|
blob
|
history
diff --git
a/src/src/expand.c
b/src/src/expand.c
index 048b87a096104c5106a701a300fd09100139b902..90da54e51d3a7a950409e55832c7503c71936594 100644
(file)
--- a/
src/src/expand.c
+++ b/
src/src/expand.c
@@
-1,4
+1,4
@@
-/* $Cambridge: exim/src/src/expand.c,v 1.5
1 2005/12/12 15:58:53
ph10 Exp $ */
+/* $Cambridge: exim/src/src/expand.c,v 1.5
2 2005/12/14 14:50:12
ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
/*************************************************
* Exim - an Internet mail transport agent *
@@
-1230,12
+1230,15
@@
int first = 0;
int last = var_table_size;
/* Handle ACL variables, which are not in the table because their number may
int last = var_table_size;
/* Handle ACL variables, which are not in the table because their number may
-vary depending on a build-time setting. */
+vary depending on a build-time setting. If the variable's name is not of the
+form acl_mddd or acl_cddd, where the d's are digits, fall through to look for
+other names that start with acl_. */
if (Ustrncmp(name, "acl_", 4) == 0)
{
if (Ustrncmp(name, "acl_", 4) == 0)
{
- int offset, max, n;
uschar *endptr;
uschar *endptr;
+ int offset = -1;
+ int max = 0;
if (name[4] == 'm')
{
if (name[4] == 'm')
{
@@
-1247,11
+1250,13
@@
if (Ustrncmp(name, "acl_", 4) == 0)
offset = 0;
max = ACL_CVARS;
}
offset = 0;
max = ACL_CVARS;
}
- else return NULL;
- n = Ustrtoul(name + 5, &endptr, 10);
- if (*endptr != 0 || n >= max) return NULL;
- return (acl_var[offset + n] == NULL)? US"" : acl_var[offset + n];
+ if (offset >= 0)
+ {
+ int n = Ustrtoul(name + 5, &endptr, 10);
+ if (*endptr == 0 && n < max)
+ return (acl_var[offset + n] == NULL)? US"" : acl_var[offset + n];
+ }
}
/* For all other variables, search the table */
}
/* For all other variables, search the table */