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.
* 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
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
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
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
@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
@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
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
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
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
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
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
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
/* 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;
/* 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;
}
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) {
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);
}
}
}
}
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);
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);
}
}
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);
/*