]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.8-20230402
authorWietse Venema <wietse@porcupine.org>
Sun, 2 Apr 2023 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Fri, 7 Apr 2023 04:40:54 +0000 (00:40 -0400)
15 files changed:
postfix/HISTORY
postfix/html/postscreen.8.html
postfix/man/man8/postscreen.8
postfix/proto/stop.double-history
postfix/proto/stop.spell-history
postfix/proto/stop.spell-proto-html
postfix/src/dns/Makefile.in
postfix/src/dns/dns.h
postfix/src/dns/dns_rr.c
postfix/src/global/mail_version.h
postfix/src/global/namadr_list.in
postfix/src/global/namadr_list.ref
postfix/src/postscreen/postscreen.c
postfix/src/util/Makefile.in
postfix/src/util/match_list.c

index 43198443ab9f10f7cf86d1e9f502d592c5763492..56d7756d9749d8eed2d7308ec502a5d4001d600d 100644 (file)
@@ -26995,3 +26995,22 @@ Apologies for any names omitted.
        form "name = value" instead of the expected "name=value".
        Found during code maintenance. Also refined an "empty name"
        check. Files: clean_env.c, split_nameval.c.
+
+20230402
+
+       Cleanup: changed the DNS_RR data structure so that it remains
+       ABI-compatible when new fields are added at the end. This
+       avoids crashing programs that are started while Postfix is
+       being updated. However, *this* specific change cannot be
+       ABI-compatible. Files: dns/dns_rr.c.
+
+       Cleanup: added missing Valgrind test support. Files:
+       dns/Makefile.in, util/Makefile.in.
+
+       Documentation: fixed a `whitelist' instance in the postscreen(8)
+       manpage. File: postscreen/postscreen.c.
+
+       Cleanup: support for multiline entities in match lists, for
+       example, inline maps. Added Valgrind support to the namadr_list
+       unit test. Files: util/match_list.c, global/namadr_list.in,
+       util/Makefile.in.
index b81ba76ca455ed2cacf087012dc9ea14e67bb5b0..3511a9cabffe3b31b9dffe2ecfbbff9e570833da 100644 (file)
@@ -177,8 +177,10 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
        the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> cache between primary and backup  MTAs,  which  would
        introduce a common point of failure.
 
-       <b><a href="postconf.5.html#postscreen_whitelist_interfaces">postscreen_whitelist_interfaces</a> (<a href="DATABASE_README.html#types">static</a>:all)</b>
-              Renamed to <a href="postconf.5.html#postscreen_allowlist_interfaces">postscreen_allowlist_interfaces</a> in Postfix 3.6.
+       <b><a href="postconf.5.html#postscreen_allowlist_interfaces">postscreen_allowlist_interfaces</a> (<a href="DATABASE_README.html#types">static</a>:all)</b>
+              A  list  of  local  <a href="postscreen.8.html"><b>postscreen</b>(8)</a>  server  IP  addresses where a
+              non-allowlisted remote SMTP client  can  obtain  <a href="postscreen.8.html"><b>postscreen</b>(8)</a>'s
+              temporary allowlist status.
 
 <b>BEFORE 220 GREETING TESTS</b>
        These  tests  are  executed  before the remote SMTP client receives the
index 0687a5e148adde16d380b473f7d32fd70cb211ac..556a8652d82a44b3e04258248adc20c174cf60f7 100644 (file)
@@ -198,8 +198,10 @@ this requires configuring primary and backup MX addresses
 on the same MTA. Larger sites would have to share the
 \fBpostscreen\fR(8) cache between primary and backup MTAs,
 which would introduce a common point of failure.
-.IP "\fBpostscreen_whitelist_interfaces (static:all)\fR"
-Renamed to postscreen_allowlist_interfaces in Postfix 3.6.
+.IP "\fBpostscreen_allowlist_interfaces (static:all)\fR"
+A list of local \fBpostscreen\fR(8) server IP addresses where a
+non\-allowlisted remote SMTP client can obtain \fBpostscreen\fR(8)'s temporary
+allowlist status.
 .SH "BEFORE 220 GREETING TESTS"
 .na
 .nf
index 602285f0ee3230f8561030671665f8b91418a470..9f05f29e3fdca4fe5a56eca572ed8446136a6657 100644 (file)
@@ -38,3 +38,4 @@ proto  proto SASL_README html proto SQLITE_README html
  util net_mask_top hc smtpd smtpd c smtpd smtpd_peer c 
  util inet_prefix_top hc smtpd smtpd c smtpd smtpd_peer c 
  File smtp smtp h 
+ manpage File postscreen postscreen c 
index c248a4c8c3d00fb233eb1574d55881959c42f621..669c2e3f98ac49013e58d006dde16fdce7a6a1d0 100644 (file)
@@ -52,3 +52,4 @@ soho
 Aleksandr
 Stankevic
 Gallagher
+Valgrind
index 6d0cb20c764de3a28ac95a29d9d1b984a15f5083..1912240807b0af3299e26b8ab8bf7e3ac27fffb3 100644 (file)
@@ -356,3 +356,4 @@ ffdhe
 kDHE
 srv
 wraptls
+api
index 795f9ba2a807de4203e94f0866f172f16b2e9243..3ebf75f8162aa49cffa140253eb4f23ecc9d9df4 100644 (file)
@@ -100,62 +100,62 @@ dns_rr_eq_sa: $(LIB) $(LIBS)
        mv junk $@.o
 
 dns_rr_to_pa_test: dns_rr_to_pa dns_rr_to_pa.in dns_rr_to_pa.ref
-       $(SHLIB_ENV) ./dns_rr_to_pa `cat dns_rr_to_pa.in` >dns_rr_to_pa.tmp
+       $(SHLIB_ENV) $(VALGRIND) ./dns_rr_to_pa `cat dns_rr_to_pa.in` >dns_rr_to_pa.tmp
        diff dns_rr_to_pa.ref dns_rr_to_pa.tmp
        rm -f dns_rr_to_pa.tmp
 
 dns_rr_to_sa_test: dns_rr_to_sa dns_rr_to_sa.in dns_rr_to_sa.ref
-       $(SHLIB_ENV) ./dns_rr_to_sa `cat dns_rr_to_sa.in` >dns_rr_to_sa.tmp
+       $(SHLIB_ENV) $(VALGRIND) ./dns_rr_to_sa `cat dns_rr_to_sa.in` >dns_rr_to_sa.tmp
        diff dns_rr_to_sa.ref dns_rr_to_sa.tmp
        rm -f dns_rr_to_sa.tmp
 
 dns_sa_to_rr_test: dns_sa_to_rr dns_sa_to_rr.in dns_sa_to_rr.ref
-       $(SHLIB_ENV) ./dns_sa_to_rr `cat dns_sa_to_rr.in` >dns_sa_to_rr.tmp
+       $(SHLIB_ENV) $(VALGRIND) ./dns_sa_to_rr `cat dns_sa_to_rr.in` >dns_sa_to_rr.tmp
        diff dns_sa_to_rr.ref dns_sa_to_rr.tmp
        rm -f dns_sa_to_rr.tmp
 
 dns_rr_eq_sa_test: dns_rr_eq_sa dns_rr_eq_sa.in dns_rr_eq_sa.ref
-       $(SHLIB_ENV) ./dns_rr_eq_sa `cat dns_rr_eq_sa.in` >dns_rr_eq_sa.tmp
+       $(SHLIB_ENV) $(VALGRIND) ./dns_rr_eq_sa `cat dns_rr_eq_sa.in` >dns_rr_eq_sa.tmp
        diff dns_rr_eq_sa.ref dns_rr_eq_sa.tmp
        rm -f dns_rr_eq_sa.tmp
 
 no-a-test: no-a.reg test_dns_lookup no-a.ref
-       $(SHLIB_ENV) ./test_dns_lookup -f regexp:no-a.reg a,aaaa spike.porcupine.org >test_dns_lookup.tmp 2>&1
+       $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -f regexp:no-a.reg a,aaaa spike.porcupine.org >test_dns_lookup.tmp 2>&1
        diff no-a.ref test_dns_lookup.tmp
        rm -f test_dns_lookup.tmp
 
 no-aaaa-test: no-aaaa.reg test_dns_lookup no-aaaa.ref
-       $(SHLIB_ENV) ./test_dns_lookup -f regexp:no-aaaa.reg a,aaaa spike.porcupine.org >test_dns_lookup.tmp 2>&1
+       $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -f regexp:no-aaaa.reg a,aaaa spike.porcupine.org >test_dns_lookup.tmp 2>&1
        diff no-aaaa.ref test_dns_lookup.tmp
        rm -f test_dns_lookup.tmp
 
 no-mx-test: no-mx.reg test_dns_lookup no-mx.ref
-       set -e; $(SHLIB_ENV) ./test_dns_lookup -f regexp:no-mx.reg mx porcupine.org 2>&1 | sort >test_dns_lookup.tmp || true
+       set -e; $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -f regexp:no-mx.reg mx porcupine.org 2>&1 | sort >test_dns_lookup.tmp || true
        diff no-mx.ref test_dns_lookup.tmp
        rm -f test_dns_lookup.tmp
 
 error-filter-test: error.reg test_dns_lookup error.ref
-       set -e; $(SHLIB_ENV) ./test_dns_lookup -f regexp:error.reg a,aaaa spike.porcupine.org >test_dns_lookup.tmp 2>&1 || true
+       set -e; $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -f regexp:error.reg a,aaaa spike.porcupine.org >test_dns_lookup.tmp 2>&1 || true
        diff error.ref test_dns_lookup.tmp
        rm -f test_dns_lookup.tmp
 
 nullmx_test: test_dns_lookup nullmx_test.ref
        (set -e; \
-       $(SHLIB_ENV) ./test_dns_lookup mx,a nullmx.porcupine.org; \
+       $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup mx,a nullmx.porcupine.org; \
        ) >nullmx_test.tmp 2>&1 || exit 0
        diff nullmx_test.ref nullmx_test.tmp
        rm -f nullmx_test.tmp
 
 nxdomain_test: test_dns_lookup nxdomain_test.ref
        (set -e; \
-       $(SHLIB_ENV) ./test_dns_lookup mx,a nxdomain.porcupine.org; \
+       $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup mx,a nxdomain.porcupine.org; \
        ) >nxdomain_test.tmp 2>&1 || exit 0
        diff nxdomain_test.ref nxdomain_test.tmp
        rm -f nxdomain_test.tmp
 
 mxonly_test: test_dns_lookup mxonly_test.ref
        (set -e; \
-       $(SHLIB_ENV) ./test_dns_lookup mx,a porcupine.org | sort; \
+       $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup mx,a porcupine.org | sort; \
        ) >mxonly_test.tmp 2>&1 || exit 0
        diff mxonly_test.ref mxonly_test.tmp
        rm -f mxonly_test.tmp
@@ -164,8 +164,8 @@ mxonly_test: test_dns_lookup mxonly_test.ref
 
 dnsbl_ttl_127.0.0.1_bind_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_plain.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup a 1.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup a 1.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup a 1.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup a 1.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_NEXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.1_bind_plain.tmp
        diff dnsbl_ttl_127.0.0.1_bind_plain.ref dnsbl_ttl_127.0.0.1_bind_plain.tmp
        rm -f dnsbl_ttl_127.0.0.1_bind_plain.tmp
@@ -174,8 +174,8 @@ dnsbl_ttl_127.0.0.1_bind_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_pl
 
 dnsbl_ttl_127.0.0.1_priv_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_plain.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup -p a 1.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup -p a 1.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -p a 1.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -p a 1.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_NEXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.1_priv_plain.tmp
        diff dnsbl_ttl_127.0.0.1_bind_plain.ref dnsbl_ttl_127.0.0.1_priv_plain.tmp
        rm -f dnsbl_ttl_127.0.0.1_priv_plain.tmp
@@ -184,8 +184,8 @@ dnsbl_ttl_127.0.0.1_priv_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_pl
 
 dnsbl_ttl_127.0.0.1_bind_ncache_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_ncache.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup -n a 1.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup -n a 1.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n a 1.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n a 1.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_NEXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.1_bind_ncache.tmp
        diff dnsbl_ttl_127.0.0.1_bind_ncache.ref dnsbl_ttl_127.0.0.1_bind_ncache.tmp
        rm -f dnsbl_ttl_127.0.0.1_bind_ncache.tmp
@@ -194,8 +194,8 @@ dnsbl_ttl_127.0.0.1_bind_ncache_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_n
 
 dnsbl_ttl_127.0.0.1_priv_ncache_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_ncache.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup -n -p a 1.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup -n -p a 1.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n -p a 1.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n -p a 1.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_NEXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.1_priv_ncache.tmp
        diff dnsbl_ttl_127.0.0.1_bind_ncache.ref dnsbl_ttl_127.0.0.1_priv_ncache.tmp
        rm -f dnsbl_ttl_127.0.0.1_priv_ncache.tmp
@@ -204,8 +204,8 @@ dnsbl_ttl_127.0.0.1_priv_ncache_test: test_dns_lookup dnsbl_ttl_127.0.0.1_bind_n
 
 dnsbl_ttl_127.0.0.2_bind_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.2_bind_plain.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup a 2.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup a 2.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup a 2.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup a 2.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_EXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.2_bind_plain.tmp
        diff dnsbl_ttl_127.0.0.2_bind_plain.ref dnsbl_ttl_127.0.0.2_bind_plain.tmp
        rm -f dnsbl_ttl_127.0.0.2_bind_plain.tmp
@@ -214,8 +214,8 @@ dnsbl_ttl_127.0.0.2_bind_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.2_bind_pl
 
 dnsbl_ttl_127.0.0.2_priv_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.2_bind_plain.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup -p a 2.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup -p a 2.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -p a 2.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -p a 2.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_EXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.2_priv_plain.tmp
        diff dnsbl_ttl_127.0.0.2_bind_plain.ref dnsbl_ttl_127.0.0.2_priv_plain.tmp
        rm -f dnsbl_ttl_127.0.0.2_priv_plain.tmp
@@ -224,8 +224,8 @@ dnsbl_ttl_127.0.0.2_priv_plain_test: test_dns_lookup dnsbl_ttl_127.0.0.2_bind_pl
 
 dnsbl_ttl_127.0.0.2_bind_ncache_test: test_dns_lookup dnsbl_ttl_127.0.0.2_bind_plain.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup -n a 2.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup -n a 2.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n a 2.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n a 2.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_EXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.2_bind_ncache.tmp
        diff dnsbl_ttl_127.0.0.2_bind_plain.ref dnsbl_ttl_127.0.0.2_bind_ncache.tmp
        rm -f dnsbl_ttl_127.0.0.2_bind_ncache.tmp
@@ -234,8 +234,8 @@ dnsbl_ttl_127.0.0.2_bind_ncache_test: test_dns_lookup dnsbl_ttl_127.0.0.2_bind_p
 
 dnsbl_ttl_127.0.0.2_priv_ncache_test: test_dns_lookup dnsbl_ttl_127.0.0.2_bind_plain.ref
        (set -e; \
-        $(SHLIB_ENV) ./test_dns_lookup -n -p a 2.0.0.127.zen.spamhaus.org; \
-        $(SHLIB_ENV) ./test_dns_lookup -n -p a 2.0.0.127.bl.spamcop.net; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n -p a 2.0.0.127.zen.spamhaus.org; \
+        $(SHLIB_ENV) $(VALGRIND) ./test_dns_lookup -n -p a 2.0.0.127.bl.spamcop.net; \
        ) 2>&1 | $(DNSBL_EXIST_REPLY_FIX) >dnsbl_ttl_127.0.0.2_priv_ncache.tmp
        diff dnsbl_ttl_127.0.0.2_bind_plain.ref dnsbl_ttl_127.0.0.2_priv_ncache.tmp
        rm -f dnsbl_ttl_127.0.0.2_priv_ncache.tmp
index acc1fb02951baa9c232b9a563cf6a10889a3a9f7..2b77015cb748f271edc350a4e62c4ffdf6b7c807 100644 (file)
@@ -163,7 +163,8 @@ typedef struct DNS_RR {
     unsigned short port;               /* T_SRV related, defined in rfc2782 */
     struct DNS_RR *next;               /* linkage */
     size_t  data_len;                  /* actual data size */
-    char    data[1];                   /* actually a bunch of data */
+    char    *data;                     /* a bunch of data */
+     /* Add new fields at the end, for ABI forward compatibility. */
 } DNS_RR;
 
  /*
index 803263599f520a5cd58db11d0b89fbbb65dbab22..44918b10c4d7a75eb009889d7930a1981f44883f 100644 (file)
@@ -160,7 +160,7 @@ DNS_RR *dns_rr_create(const char *qname, const char *rname,
 {
     DNS_RR *rr;
 
-    rr = (DNS_RR *) mymalloc(sizeof(*rr) + data_len - 1);
+    rr = (DNS_RR *) mymalloc(sizeof(*rr));
     rr->qname = mystrdup(qname);
     rr->rname = mystrdup(rname);
     rr->type = type;
@@ -170,8 +170,12 @@ DNS_RR *dns_rr_create(const char *qname, const char *rname,
     rr->pref = pref;
     rr->weight = weight;
     rr->port = port;
-    if (data && data_len > 0)
+    if (data_len != 0) {
+       rr->data = mymalloc(data_len);
        memcpy(rr->data, data, data_len);
+    } else {
+       rr->data = 0;
+    }
     rr->data_len = data_len;
     rr->next = 0;
     return (rr);
@@ -186,6 +190,8 @@ void    dns_rr_free(DNS_RR *rr)
            dns_rr_free(rr->next);
        myfree(rr->qname);
        myfree(rr->rname);
+       if (rr->data)
+           myfree(rr->data);
        myfree((void *) rr);
     }
 }
index 6285c99f8dd135e499849aa3787e5c0574db518b..8a382c3966fda43325eac9847b0fcfca63a74abf 100644 (file)
@@ -20,7 +20,7 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20230331"
+#define MAIL_RELEASE_DATE      "20230402"
 #define MAIL_VERSION_NUMBER    "3.8"
 
 #ifdef SNAPSHOT
index 45423873764da3c9ec3e462c99c4a16981f95377..a21516b6d0004fa7e5b91dd958327948291a7e6b 100644 (file)
@@ -1,42 +1,52 @@
-./namadr_list 168.100.3.0/28 dummy 168.100.3.2
-./namadr_list '!168.100.3.2 168.100.3.0/28' dummy 168.100.3.2
-./namadr_list '!168.100.3.2 168.100.3.0/28' dummy 168.100.3.3
-./namadr_list 168.100.3.0/28 dummy 168.100.3.16
-./namadr_list 168.100.3.0/98 dummy 168.100.3.16
-./namadr_list 168.100.589.0/28 dummy 168.100.3.16
-./namadr_list 168.100.3.0/28 dummy 168.100.989.16
-./namadr_list 2001:240:5c7:0:2d0:b7ff:fe88:2ca7 dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca7
-./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca7
-./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca8
-./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]/64' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca8
-./namadr_list '[2001:240:5c7::]/64' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca8
-./namadr_list '[2001:240:5c7::]/64' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca8
-./namadr_list '[2001:24:5c7:0:2d0:b7ff:fe88:2ca8]' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca8
-./namadr_list '[2001:24:5c7:0:2d0:b7ff:fe88:2ca8]' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca7
-./namadr_list 168.100.3.2 dummy 168.100.3.2
-./namadr_list 168.100.3.2 dummy 168.100.3.3
-./namadr_list '[168.100.3.2]' dummy 168.100.3.2
-./namadr_list '[168.100.3.2]' dummy 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 168.100.3.0/28 dummy 168.100.3.2
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '!168.100.3.2 168.100.3.0/28' dummy 168.100.3.2
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '!168.100.3.2 168.100.3.0/28' dummy 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 168.100.3.0/28 dummy 168.100.3.16
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 168.100.3.0/98 dummy 168.100.3.16
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 168.100.589.0/28 dummy 168.100.3.16
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 168.100.3.0/28 dummy 168.100.989.16
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 2001:240:5c7:0:2d0:b7ff:fe88:2ca7 dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca7
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca7
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca8
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[2001:240:5c7:0:2d0:b7ff:fe88:2ca7]/64' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca8
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[2001:240:5c7::]/64' dummy 2001:240:5c7:0:2d0:b7ff:fe88:2ca8
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[2001:240:5c7::]/64' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca8
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[2001:24:5c7:0:2d0:b7ff:fe88:2ca8]' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca8
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[2001:24:5c7:0:2d0:b7ff:fe88:2ca8]' dummy 2001:24:5c7:0:2d0:b7ff:fe88:2ca7
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 168.100.3.2 dummy 168.100.3.2
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 168.100.3.2 dummy 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[168.100.3.2]' dummy 168.100.3.2
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[168.100.3.2]' dummy 168.100.3.3
 echo foo !bar baz >junk; mv junk /tmp
-./namadr_list !/tmp/junk dummy 168.100.3.3
-./namadr_list !/tmp/junk foo 168.100.3.3
-./namadr_list !/tmp/junk bar 168.100.3.3
-./namadr_list !/tmp/junk baz 168.100.3.3
-./namadr_list /tmp/junk dummy 168.100.3.3
-./namadr_list /tmp/junk foo 168.100.3.3
-./namadr_list /tmp/junk bar 168.100.3.3
-./namadr_list /tmp/junk baz 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list !/tmp/junk dummy 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list !/tmp/junk foo 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list !/tmp/junk bar 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list !/tmp/junk baz 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk dummy 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk foo 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk bar 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk baz 168.100.3.3
 rm -f junk
-./namadr_list 'be.be' x.x.x 127.0.0.1
-./namadr_list 'be/be' x.x.x 127.0.0.1
-./namadr_list '[be:be]' x.x.x 127.0.0.1
-./namadr_list '[be:be]' x.x.x ::1
-env foo=x ./namadr_list environ:junk foo 168.100.3.3
-env foo=x ./namadr_list environ:junk bar 168.100.3.3
-env foo=x ./namadr_list !environ:junk foo 168.100.3.3
-env foo=x ./namadr_list !environ:junk bar 168.100.3.3
-env foo=x ./namadr_list !!environ:junk foo 168.100.3.3
-env foo=x ./namadr_list !!environ:junk bar 168.100.3.3
-./namadr_list fail:1 bar 168.100.3.3
-./namadr_list !fail:1 bar 168.100.3.3
-./namadr_list /tmp/nosuchfile bar 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 'be.be' x.x.x 127.0.0.1
+${SHLIB_ENV} ${VALGRIND} ./namadr_list 'be/be' x.x.x 127.0.0.1
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[be:be]' x.x.x 127.0.0.1
+${SHLIB_ENV} ${VALGRIND} ./namadr_list '[be:be]' x.x.x ::1
+foo=x ${SHLIB_ENV} ${VALGRIND} ./namadr_list environ:junk foo 168.100.3.3
+foo=x ${SHLIB_ENV} ${VALGRIND} ./namadr_list environ:junk bar 168.100.3.3
+foo=x ${SHLIB_ENV} ${VALGRIND} ./namadr_list !environ:junk foo 168.100.3.3
+foo=x ${SHLIB_ENV} ${VALGRIND} ./namadr_list !environ:junk bar 168.100.3.3
+foo=x ${SHLIB_ENV} ${VALGRIND} ./namadr_list !!environ:junk foo 168.100.3.3
+foo=x ${SHLIB_ENV} ${VALGRIND} ./namadr_list !!environ:junk bar 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list fail:1 bar 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list !fail:1 bar 168.100.3.3
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/nosuchfile bar 168.100.3.3
+echo foo baz '#text'>junk; mv junk /tmp
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk foo 1.2.3.4
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk fool 1.2.3.4
+echo 'foo inline:{
+    { bar = yes}
+  } baz' >junk; mv junk /tmp
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk foo 1.2.3.4
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk bar 1.2.3.4
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk baz 1.2.3.4
+${SHLIB_ENV} ${VALGRIND} ./namadr_list /tmp/junk fool 1.2.3.4
index e38b88348d17f34957462d551c4d3cfd2eac7bcf..77ab9bdc923dbd93dae0ee2e5fec4739a9941a81 100644 (file)
@@ -51,3 +51,11 @@ bar/168.100.3.3: ERROR
 ./namadr_list: warning: non-existent:/tmp/nosuchfile is unavailable. open file /tmp/nosuchfile: No such file or directory
 ./namadr_list: warning: command line: non-existent:/tmp/nosuchfile: table lookup problem
 bar/168.100.3.3: ERROR
+./namadr_list: warning: command line: comment at end of line is not supported: #text 
+foo/1.2.3.4: YES
+./namadr_list: warning: command line: comment at end of line is not supported: #text 
+fool/1.2.3.4: NO
+foo/1.2.3.4: YES
+bar/1.2.3.4: YES
+baz/1.2.3.4: YES
+fool/1.2.3.4: NO
index 8dbdc8d704386fab3ee93f0032c04205860309c2..192c2e90cb6df7287d3207dd99cbd365ceb6295c 100644 (file)
 /*     on the same MTA. Larger sites would have to share the
 /*     \fBpostscreen\fR(8) cache between primary and backup MTAs,
 /*     which would introduce a common point of failure.
-/* .IP "\fBpostscreen_whitelist_interfaces (static:all)\fR"
-/*     Renamed to postscreen_allowlist_interfaces in Postfix 3.6.
+/* .IP "\fBpostscreen_allowlist_interfaces (static:all)\fR"
+/*     A list of local \fBpostscreen\fR(8) server IP addresses where a
+/*     non-allowlisted remote SMTP client can obtain \fBpostscreen\fR(8)'s temporary
+/*     allowlist status.
 /* BEFORE 220 GREETING TESTS
 /* .ad
 /* .fi
index 410a893aed2aa2d44dfd46b5d1c47e94a93fab51..3ff78587583daf66923dc19c880eda3d8b0f8a2e 100644 (file)
@@ -641,7 +641,7 @@ mac_expand_test: mac_expand mac_expand.in mac_expand.ref
 unescape_test: unescape unescape.in unescape.ref
        $(SHLIB_ENV) ${VALGRIND} ./unescape <unescape.in | od -cb >unescape.tmp
        diff -b unescape.ref unescape.tmp
-#      $(SHLIB_ENV) ${VALGRIND} ./unescape <unescape.in | $(SHLIB_ENV) ./unescape -e >unescape.tmp
+#      $(SHLIB_ENV) ${VALGRIND} ./unescape <unescape.in | $(SHLIB_ENV) ${VALGRIND} ./unescape -e >unescape.tmp
 #      diff unescape.in unescape.tmp
        rm -f unescape.tmp
 
@@ -672,12 +672,12 @@ base64_code_test: base64_code
        $(SHLIB_ENV) ${VALGRIND} ./base64_code
 
 attr_scan64_test: attr_print64 attr_scan64 attr_scan64.ref
-       ($(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_print64 2>&3 | (sleep 1; $(HTABLE_FIX) $(SHLIB_ENV) ./attr_scan64)) >attr_scan64.tmp 2>&1 3>&1
+       ($(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_print64 2>&3 | (sleep 1; $(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_scan64)) >attr_scan64.tmp 2>&1 3>&1
        diff attr_scan64.ref attr_scan64.tmp
        rm -f attr_scan64.tmp
 
 attr_scan0_test: attr_print0 attr_scan0 attr_scan0.ref
-       ($(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_print0 2>&3 | (sleep 1; $(HTABLE_FIX) $(SHLIB_ENV) ./attr_scan0)) >attr_scan0.tmp 2>&1 3>&1
+       ($(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_print0 2>&3 | (sleep 1; $(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_scan0)) >attr_scan0.tmp 2>&1 3>&1
        diff attr_scan0.ref attr_scan0.tmp
        rm -f attr_scan0.tmp
 
@@ -765,7 +765,7 @@ host_port_test: host_port host_port.in host_port.ref
        rm -f host_port.tmp
 
 attr_scan_plain_test: attr_print_plain attr_scan_plain attr_scan_plain.ref
-       ($(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_print_plain 2>&3 | (sleep 1; $(HTABLE_FIX) $(SHLIB_ENV) ./attr_scan_plain)) >attr_scan_plain.tmp 2>&1 3>&1
+       ($(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_print_plain 2>&3 | (sleep 1; $(HTABLE_FIX) $(SHLIB_ENV) ${VALGRIND} ./attr_scan_plain)) >attr_scan_plain.tmp 2>&1 3>&1
        diff attr_scan_plain.ref attr_scan_plain.tmp
        rm -f attr_scan_plain.tmp
 
@@ -1337,11 +1337,16 @@ cidr_match.o: sys_defs.h
 cidr_match.o: vbuf.h
 cidr_match.o: vstring.h
 clean_env.o: argv.h
+clean_env.o: check_arg.h
 clean_env.o: clean_env.c
 clean_env.o: clean_env.h
 clean_env.o: msg.h
+clean_env.o: mymalloc.h
 clean_env.o: safe.h
+clean_env.o: stringops.h
 clean_env.o: sys_defs.h
+clean_env.o: vbuf.h
+clean_env.o: vstring.h
 close_on_exec.o: close_on_exec.c
 close_on_exec.o: iostuff.h
 close_on_exec.o: msg.h
@@ -2203,12 +2208,12 @@ match_list.o: match_list.h
 match_list.o: msg.h
 match_list.o: myflock.h
 match_list.o: mymalloc.h
+match_list.o: readlline.h
 match_list.o: stringops.h
 match_list.o: sys_defs.h
 match_list.o: vbuf.h
 match_list.o: vstream.h
 match_list.o: vstring.h
-match_list.o: vstring_vstream.h
 match_ops.o: argv.h
 match_ops.o: check_arg.h
 match_ops.o: cidr_match.h
index 520485dd0ca6146d5b8ee3163fa23004733436ca..924c6b4a82be813dfd2b11a5a29839fe22d8d5cb 100644 (file)
 #include <mymalloc.h>
 #include <vstring.h>
 #include <vstream.h>
-#include <vstring_vstream.h>
+#include <readlline.h>
 #include <stringops.h>
 #include <argv.h>
 #include <dict.h>
@@ -167,10 +167,9 @@ static ARGV *match_list_parse(MATCH_LIST *match_list, ARGV *pat_list,
                                                 "open file %s: %m", item));
                argv_add(pat_list, STR(buf), (char *) 0);
            } else {
-               while (vstring_fgets(buf, fp))
-                   if (vstring_str(buf)[0] != '#')
-                       pat_list = match_list_parse(match_list, pat_list,
-                                                   vstring_str(buf), match);
+               while (readlline(buf, fp, (int *) 0))
+                   pat_list = match_list_parse(match_list, pat_list,
+                                               vstring_str(buf), match);
                if (vstream_fclose(fp))
                    msg_fatal("%s: read file %s: %m", myname, item);
            }