From: Wietse Z Venema Date: Sun, 11 Jan 2026 05:00:00 +0000 (-0500) Subject: postfix-3.12-20260111 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=c00377ebeb63d13af71a9c35c79ea4958d1a12f1;p=thirdparty%2Fpostfix.git postfix-3.12-20260111 --- diff --git a/postfix/HISTORY b/postfix/HISTORY index ad770cb08..9a8801222 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -30330,3 +30330,11 @@ Apologies for any names omitted. proxymap/proxymap.c Cleanup: re-run 'make depend'. File: cleanup/Makefile.in. + +20260111 + + Cleanup: proxymap provenance in error and debug logging. + File: proxymap/proxymap.c. + + Cleanup: unbroke Valgrind tests. Files: postmulti/Makefile.in, + proxymap/Makefile.in. diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 2b2313445..3a6ca89f8 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -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 "20260110" +#define MAIL_RELEASE_DATE "20260111" #define MAIL_VERSION_NUMBER "3.12" #ifdef SNAPSHOT diff --git a/postfix/src/postmulti/Makefile.in b/postfix/src/postmulti/Makefile.in index 790d97dc6..cbb6020a3 100644 --- a/postfix/src/postmulti/Makefile.in +++ b/postfix/src/postmulti/Makefile.in @@ -41,7 +41,7 @@ single_test: $(TESTPROG) echo shlib_directory = ../../lib >> main.cf touch -t 197101010000 main.cf printf "%-15s %-15s %-9s %s\n" - - y . >single_test.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=. \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} \ ./$(TESTPROG) -l | diff single_test.tmp - rm -f main.cf single_test.tmp @echo PASS single_test; echo @@ -59,7 +59,7 @@ json_single_test: $(TESTPROG) echo shlib_directory = ../../lib >> main.cf touch -t 197101010000 main.cf echo "{\"name\": \"-\",\"group\": \"-\",\"enabled\": \"y\",\"config_directory\": \".\"}" >> json_single_test.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=. \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} \ ./$(TESTPROG) -lj | diff json_single_test.tmp - rm -f main.cf json_single_test.tmp @echo PASS json_single_test; echo @@ -75,7 +75,7 @@ config_dir_test: $(PROG) echo shlib_directory = ../../lib >> main.cf touch -t 197101010000 main.cf echo "postmulti: fatal: Non-default configuration directory: MAIL_CONFIG=." > config_dir_test.tmp - ($(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=. ./$(PROG) -l 2>&1 || exit 0) \ + (MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) -l 2>&1 || exit 0) \ | diff config_dir_test.tmp - rm -f config_dir_test.tmp @echo PASS config_dir_test; echo diff --git a/postfix/src/proxymap/Makefile.in b/postfix/src/proxymap/Makefile.in index dc60edd2f..c169caa81 100644 --- a/postfix/src/proxymap/Makefile.in +++ b/postfix/src/proxymap/Makefile.in @@ -45,7 +45,7 @@ empty_proxymap_table: $(PROG) @echo RUN empty_proxymap_table @$(SETUP_FILES) touch -t 197101010000 main.cf - MAIL_CONFIG=`pwd` $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-all-proxymap | diff /dev/null - @$(CLEANUP_FILES) @echo PASS empty_proxymap_table; echo @@ -54,7 +54,7 @@ empty_proxywrite_table: $(PROG) @echo RUN empty_proxywrite_table @$(SETUP_FILES) touch -t 197101010000 main.cf - MAIL_CONFIG=`pwd` $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-all-proxywrite | diff /dev/null - @$(CLEANUP_FILES) @echo PASS empty_proxywrite_table; echo @@ -65,7 +65,7 @@ proxy_read_map_works_for_proxied: $(PROG) echo local_recipient_maps = proxy:unix:passwd.byname cdb:/some/aliases >> main.cf touch -t 197101010000 main.cf echo unix:passwd.byname > proxy_read_map_works_for_proxied.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=`pwd` ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-proxy-proxymap | \ diff proxy_read_map_works_for_proxied.tmp - @$(CLEANUP_FILES) proxy_read_map_works_for_proxied.tmp @@ -78,7 +78,7 @@ proxy_read_map_works_for_both: $(PROG) touch -t 197101010000 main.cf echo cdb:/some/aliases > proxy_read_map_works_for_both.tmp echo unix:passwd.byname >> proxy_read_map_works_for_both.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=`pwd` ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-all-proxymap | diff proxy_read_map_works_for_both.tmp - @$(CLEANUP_FILES) proxy_read_map_works_for_both.tmp @echo PASS proxy_read_map_works_for_both; echo @@ -89,7 +89,7 @@ proxy_write_works: $(PROG) echo postscreen_cache_map = proxy:lmdb:/some/path >> main.cf touch -t 197101010000 main.cf echo lmdb:/some/path > proxy_write_works.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=`pwd` ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-proxy-proxywrite | \ diff proxy_write_works.tmp - @$(CLEANUP_FILES) proxy_write_works.tmp @@ -103,7 +103,7 @@ smtpd_restriction_classes_works: $(PROG) echo bar = proxy:lmdb:/some/file >> main.cf touch -t 197101010000 main.cf echo lmdb:/some/file > smtpd_restriction_classes_works.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=`pwd` ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-proxy-proxymap | \ diff smtpd_restriction_classes_works.tmp - @$(CLEANUP_FILES) smtpd_restriction_classes_works.tmp @@ -116,7 +116,7 @@ file_name_works: $(PROG) echo proxy:lmdb:/some/file > file_name_works_file touch -t 197101010000 main.cf echo lmdb:/some/file > file_name_works.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=`pwd` ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-proxy-proxymap | \ diff file_name_works.tmp - @$(CLEANUP_FILES) file_name_works.tmp file_name_works_file @@ -125,10 +125,10 @@ file_name_works: $(PROG) ignores_non_dictionary_form: $(PROG) @echo RUN ignores_non_dictionary_form @$(SETUP_FILES) - echo "mynetworks = map:/path [123::456]" >> main.cf + echo "mynetworks = map:/path [123::456] other_non_dict" >> main.cf touch -t 197101010000 main.cf echo map:/path > ignores_non_dictionary_form.tmp - $(SHLIB_ENV) ${VALGRIND} MAIL_CONFIG=`pwd` ./$(PROG) \ + MAIL_CONFIG=. $(SHLIB_ENV) ${VALGRIND} ./$(PROG) \ -SVnexport-all-proxymap | diff ignores_non_dictionary_form.tmp - @$(CLEANUP_FILES) ignores_non_dictionary_form.tmp @echo PASS ignores_non_dictionary_form; echo diff --git a/postfix/src/proxymap/proxymap.c b/postfix/src/proxymap/proxymap.c index a1204bc0f..c3ef77dab 100644 --- a/postfix/src/proxymap/proxymap.c +++ b/postfix/src/proxymap/proxymap.c @@ -735,7 +735,7 @@ static void authorize_file_content(const char *); /* authorize_proxied_maps - recursively authorize maps */ -static void authorize_proxied_maps(char *bp) +static void authorize_proxied_maps(char *bp, const char *origin) { const char *sep = CHARS_COMMA_SP; const char *parens = CHARS_BRACE; @@ -750,8 +750,7 @@ static void authorize_proxied_maps(char *bp) /* Warn about blatant syntax error. */ if ((err = extpar(&type_name, parens, EXTPAR_FLAG_NONE)) != 0) { - msg_warn("bad %s parameter value: %s", - PROXY_MAP_PARAM_NAME(proxy_writer), err); + msg_warn("bad syntax in %s content: %s", origin, err); myfree(err); continue; } @@ -775,12 +774,11 @@ static void authorize_proxied_maps(char *bp) continue; /* Warn about blatant syntax error. */ if ((err = extpar(&nested_info, parens, EXTPAR_FLAG_NONE)) != 0) { - msg_warn("bad %s parameter value: %s", - PROXY_MAP_PARAM_NAME(proxy_writer), err); + msg_warn("bad syntax in %s content: %s", origin, err); myfree(err); continue; } - authorize_proxied_maps(nested_info); + authorize_proxied_maps(nested_info, origin); continue; } switch (proxy_exporter) { @@ -797,12 +795,10 @@ static void authorize_proxied_maps(char *bp) type_name += PROXY_COLON_LEN; break; } - if (strchr(type_name, ':') != 0 - && htable_locate(proxy_auth_maps, type_name) == 0) { - (void) htable_enter(proxy_auth_maps, type_name, (void *) 0); + if (htable_locate(proxy_auth_maps, type_name) == 0) { + (void) htable_enter(proxy_auth_maps, type_name, mystrdup(origin)); if (msg_verbose) - msg_info("allowlisting %s from %s", type_name, - PROXY_MAP_PARAM_NAME(proxy_writer)); + msg_info("allowlisting %s from %s", type_name, origin); } } } @@ -820,7 +816,7 @@ static void authorize_file_content(const char *file_name) } buf = vstring_alloc(100); while (readlline(buf, fp, (int *) 0)) - authorize_proxied_maps(STR(buf)); + authorize_proxied_maps(STR(buf), file_name); if (vstream_ferror(fp)) msg_warn("read %s: %m", file_name); vstring_free(buf); @@ -838,7 +834,7 @@ static void authorize_rest_classes(const char *rest_classes) while ((class_name = mystrtok(&bp, CHARS_COMMA_SP)) != 0) { if ((class_val = mail_conf_lookup_eval(class_name)) != 0) { saved_class_val = mystrdup(class_val); - authorize_proxied_maps(saved_class_val); + authorize_proxied_maps(saved_class_val, VAR_REST_CLASSES); myfree(saved_class_val); } } @@ -913,7 +909,7 @@ static void pre_jail_init(char *service_name, char **unused_argv) saved_filter = mystrdup(proxy_writer ? var_proxy_write_maps : var_proxy_read_maps); proxy_auth_maps = htable_create(13); - authorize_proxied_maps(saved_filter); + authorize_proxied_maps(saved_filter, PROXY_MAP_PARAM_NAME(proxy_writer)); myfree(saved_filter); /*