------- You are receiving this mail because: -------
You are on the CC list for the bug.

http://bugs.exim.org/show_bug.cgi?id=1524
           Summary: extract inside inlisti, fails
           Product: Exim
           Version: 4.84
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: bug
          Priority: medium
         Component: String expansion
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Messing around with an LDAP issue I started trying to
lay out some example coding, and ran into some brainfade.

I'd got to here:

${if forany \
     {mail:EximMailPrimaryAddress:EximMailAlternateAddress} \
     {inlisti {$local_part} \
              {<, ${extract {$item} \
                         {${lookup
ldapm{ldap://localhost/ou=users,dc=example,dc=com?mail,cn?sub?cn=user4}}}\
                }\
              }\
     }\
 }

and, replacing the $local_part for testing, failed like so:

> ${if forany \
     {mail:EximMailPrimaryAddress:EximMailAlternateAddress} \
     {inlisti {[email protected]} \
              {<, ${extract {$item} \
                         {${lookup
ldapm{ldap://localhost/ou=users,dc=example,dc=com?mail,cn?sub?cn=user4}}}\
                }\
              }\
     }\
 }
expanding: mail:EximMailPrimaryAddress:EximMailAlternateAddress
   result: mail:EximMailPrimaryAddress:EximMailAlternateAddress
expanding: [email protected]
   result: [email protected]
skipping: result is not used
expanding: $item
   result:
skipping: result is not used
expanding: ldap://localhost/ou=users,dc=example,dc=com?mail,cn?sub?cn=user4
   result: ldap://localhost/ou=users,dc=example,dc=com?mail,cn?sub?cn=user4
skipping: result is not used
expanding: ${lookup
ldapm{ldap://localhost/ou=users,dc=example,dc=com?mail,cn?sub?cn=user4}}
   result:
skipping: result is not used
failed to expand: <, ${extract {$item} {${lookup
ldapm{ldap://localhost/ou=users,dc=example,dc=com?mail,cn?sub?cn=user4}}}}}}}
   error message: missing or misplaced { or }
failed to expand: ${if forany
{mail:EximMailPrimaryAddress:EximMailAlternateAddress} {inlisti
{[email protected]} {<, ${extract {$item} {${lookup
ldapm{ldap://localhost/ou=users,dc=example,dc=com?mail,cn?sub?cn=user4}}}}}}}
   error message: missing or misplaced { or } inside "forany" condition
Failed: missing or misplaced { or } inside "forany" condition
>

This looks to be a syntax-check initial run through
the arguments for the forany, failing because $item
is empty and ${extract requires nonempty.

Replace the $item with a dummy and it works.

The reason is that the empty result for $item is wrongly interpreted as a
number, and a third substring is insisted upon for the extract.


-- 
Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to