X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/47ca6d6cc2fd470063e3f2c36b57ee8960410b7a..d7d7b7b91dd75cec636fc144da7e27eed860f971:/src/src/expand.c diff --git a/src/src/expand.c b/src/src/expand.c index 048b87a09..4ff6e5043 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -1,10 +1,10 @@ -/* $Cambridge: exim/src/src/expand.c,v 1.51 2005/12/12 15:58:53 ph10 Exp $ */ +/* $Cambridge: exim/src/src/expand.c,v 1.53 2006/02/07 11:19:00 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2005 */ +/* Copyright (c) University of Cambridge 1995 - 2006 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -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 -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) { - int offset, max, n; uschar *endptr; + int offset = -1; + int max = 0; if (name[4] == 'm') { @@ -1247,11 +1250,13 @@ if (Ustrncmp(name, "acl_", 4) == 0) 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 */