Prereq: "2.8.19" diff -cr --new-file /var/tmp/postfix-2.8.19/src/global/mail_version.h ./src/global/mail_version.h *** /var/tmp/postfix-2.8.19/src/global/mail_version.h 2014-10-19 18:29:55.000000000 -0400 --- ./src/global/mail_version.h 2015-02-08 18:20:24.000000000 -0500 *************** *** 20,27 **** * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ ! #define MAIL_RELEASE_DATE "20141019" ! #define MAIL_VERSION_NUMBER "2.8.19" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE --- 20,27 ---- * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ ! #define MAIL_RELEASE_DATE "20150208" ! #define MAIL_VERSION_NUMBER "2.8.20" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff -cr --new-file /var/tmp/postfix-2.8.19/HISTORY ./HISTORY *** /var/tmp/postfix-2.8.19/HISTORY 2014-10-18 17:43:22.000000000 -0400 --- ./HISTORY 2015-02-08 18:02:50.000000000 -0500 *************** *** 17022,17024 **** --- 17022,17036 ---- Cleanup: revert the workaround that places headers inserted with PREPEND actions or policy requests BELOW Postfix's own Received: message header. File: smtpd/smtpd.c. + + 20150106 + + Robustness: don't segfault due to excessive recursion after + a faulty configuration runs into the virtual_alias_recursion_limit. + File: global/tok822_tree.c. + + 20150115 + + Safety: stop aliasing loops that exponentially increase the + address length with each iteration. Back-ported from Postfix + 3.0. File: cleanup/cleanup_map1n.c. diff -cr --new-file /var/tmp/postfix-2.8.19/src/cleanup/cleanup_map1n.c ./src/cleanup/cleanup_map1n.c *** /var/tmp/postfix-2.8.19/src/cleanup/cleanup_map1n.c 2010-12-05 18:53:37.000000000 -0500 --- ./src/cleanup/cleanup_map1n.c 2015-02-08 17:44:38.000000000 -0500 *************** *** 139,144 **** --- 139,153 ---- if ((lookup = mail_addr_map(maps, STR(state->temp1), propagate)) != 0) { saved_lhs = mystrdup(argv->argv[arg]); for (i = 0; i < lookup->argc; i++) { + if (strlen(lookup->argv[i]) > var_line_limit) { + msg_warn("%s: unreasonable %s result %.300s... -- " + "message not accepted, try again later", + state->queue_id, maps->title, lookup->argv[i]); + state->errs |= CLEANUP_STAT_DEFER; + UPDATE(state->reason, "4.6.0 Alias expansion error"); + UNEXPAND(argv, addr); + RETURN(argv); + } unquote_822_local(state->temp1, lookup->argv[i]); if (i == 0) { UPDATE(argv->argv[arg], STR(state->temp1)); diff -cr --new-file /var/tmp/postfix-2.8.19/src/global/tok822_tree.c ./src/global/tok822_tree.c *** /var/tmp/postfix-2.8.19/src/global/tok822_tree.c 2000-11-20 13:05:32.000000000 -0500 --- ./src/global/tok822_tree.c 2015-01-06 12:51:58.000000000 -0500 *************** *** 259,269 **** TOK822 *tok822_free_tree(TOK822 *tp) { ! if (tp) { ! if (tp->next) ! tok822_free_tree(tp->next); if (tp->head) tok822_free_tree(tp->head); tok822_free(tp); } return (0); --- 259,270 ---- TOK822 *tok822_free_tree(TOK822 *tp) { ! TOK822 *next; ! ! for (/* void */; tp != 0; tp = next) { if (tp->head) tok822_free_tree(tp->head); + next = tp->next; tok822_free(tp); } return (0);