#1051713 exim4-daemon-heavy 4.96-22: misbehavior in string expansion function reduce combined with inlisti function

Package:
exim4-daemon-heavy
Source:
exim4-daemon-heavy
Description:
Exim MTA (v4) daemon with extended features, including exiscan-acl
Submitter:
Date:
2026-02-05 17:39:02 UTC
Severity:
normal
#1051713#5
Date:
2023-09-11 16:02:34 UTC
From:
To:
Dear Maintainer,

    Installed Packages list:

  * ii  exim4                  4.96-22      all
  * ii  exim4-base             4.96-22      amd64
  * ii  exim4-config           4.96-22      all
  * ii  exim4-daemon-heavy     4.96-22      amd64

    example calling command :

    exim -be '${reduce {<\n 1.1.1.1\n2.2.2.2\n3.3.3.3\n4.4.4.4\n4.4.4.4\n}{}{${if !inlisti{$item}{<\n $value}{$value$item\n}{$value}}}}'

    output is :

      4.4.4.4  ->  last 4.4.4.4 not matched in list and last value is the output

Counter check with exim4 4.94.2 :

    Installed Packages list:

  * ii  exim4                  4.94.2-7     all
  * ii  exim4-base             4.94.2-7     amd64
  * ii  exim4-config           4.94.2-7     all
  * ii  exim4-daemon-heavy     4.94.2-7     amd64

    exim -be '${reduce {<\n 1.1.1.1\n2.2.2.2\n3.3.3.3\n4.4.4.4\n4.4.4.4\n}{}{${if !inlisti{$item}{<\n $value}{$value$item\n}{$value}}}}'

    output is :

    1.1.1.1
    2.2.2.2
    3.3.3.3
    4.4.4.4  -> last 4.4.4.4 matches in list and the reduced list is the output  (double 4.4.4.4 removed)

BR
Sascha

#1051713#12
Date:
2023-09-13 16:50:42 UTC
From:
To:
[...]
[...]


Hello,

I had forwarded this upstream to
https://bugs.exim.org/show_bug.cgi?id=3024 and received diagnosis/help
there.


Short summary follows, but please read the original response there.

This seems to be not directly fixable since inlisti changed and now
modifies $value for more sorts of matching elements than it used to.
Workarounds can be used and perhaps new features be added to provide the
same result with extended expansion syntax.

cu Andreas