2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-31 14:17:41 +00:00

postfix-3.8-20230402

This commit is contained in:
Wietse Venema
2023-04-02 00:00:00 -05:00
committed by Viktor Dukhovni
parent 62931e5b1f
commit 7b4ef3b6e1
15 changed files with 144 additions and 87 deletions

View 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.

View 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

View 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

View 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

View File

@@ -52,3 +52,4 @@ soho
Aleksandr
Stankevic
Gallagher
Valgrind

View File

@@ -356,3 +356,4 @@ ffdhe
kDHE
srv
wraptls
api

View 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

View 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;
/*

View 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);
}
}

View 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

View 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

View 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

View File

@@ -172,8 +172,10 @@
/* 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

View 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

View File

@@ -101,7 +101,7 @@
#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);
}