]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.12-20260111
authorWietse Z Venema <wietse@porcupine.org>
Sun, 11 Jan 2026 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Mon, 12 Jan 2026 14:04:43 +0000 (01:04 +1100)
postfix/HISTORY
postfix/src/global/mail_version.h
postfix/src/postmulti/Makefile.in
postfix/src/proxymap/Makefile.in
postfix/src/proxymap/proxymap.c

index ad770cb08f36ecbe1b39842cf2a0c1fa3fe258b3..9a8801222ffbc2b29dffc1d7bc1b6a194c9bf6bc 100644 (file)
@@ -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.
index 2b23134453476eaf67e1a713275ff5a408d37605..3a6ca89f82ae6decc6961471f55fe3b01760db19 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      "20260110"
+#define MAIL_RELEASE_DATE      "20260111"
 #define MAIL_VERSION_NUMBER    "3.12"
 
 #ifdef SNAPSHOT
index 790d97dc69ba322b6ea53da4b3762a5470a4eed6..cbb6020a391d2a4cb231440c9f98876f87af599e 100644 (file)
@@ -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
index dc60edd2f3364e8457ba144535f68a82a8bc46b3..c169caa81fbfc4320f93ce9687e05e1f984b4136 100644 (file)
@@ -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
index a1204bc0f404979f175c74b776deab185715860a..c3ef77dab47cee81b48e2639b7987f99294422cf 100644 (file)
@@ -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);
 
     /*