]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.9.12 v2.9.12
authorWietse Venema <wietse@porcupine.org>
Sun, 8 Feb 2015 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Sat, 10 Feb 2018 17:55:12 +0000 (12:55 -0500)
postfix/HISTORY
postfix/src/cleanup/cleanup_map1n.c
postfix/src/global/mail_version.h
postfix/src/global/tok822_tree.c

index f0abae5a484a84811edeabf0915d067d4d6498f1..e9c552200f9e39794c6f1a2673dacdf7fddb05f1 100644 (file)
@@ -17918,3 +17918,15 @@ Apologies for any names omitted.
        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.
index f7088a06b56edf7fa87746879d71d8bf747efbe9..904fcbed5bdeb5013d6f5e738471a427621a0609 100644 (file)
@@ -139,6 +139,15 @@ ARGV   *cleanup_map1n_internal(CLEANUP_STATE *state, const char *addr,
            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));
index ab37433071751ef5d4b742a0bcd54c25fd2e5d0b..1db8abf18a71f19ebe3f4f2c3b962de83b1a9ee5 100644 (file)
@@ -20,8 +20,8 @@
   * 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.9.11"
+#define MAIL_RELEASE_DATE      "20150208"
+#define MAIL_VERSION_NUMBER    "2.9.12"
 
 #ifdef SNAPSHOT
 # define MAIL_VERSION_DATE     "-" MAIL_RELEASE_DATE
index 16cec946a5afe588dc6bf7d037834939ce69545c..48d9d897ce4f9be6dcff5f0c200da2a627840b04 100644 (file)
@@ -259,11 +259,12 @@ TOK822 *tok822_sub_keep_after(TOK822 *t1, TOK822 *t2)
 
 TOK822 *tok822_free_tree(TOK822 *tp)
 {
-    if (tp) {
-       if (tp->next)
-           tok822_free_tree(tp->next);
+    TOK822 *next;
+
+    for (/* void */; tp != 0; tp = next) {
        if (tp->head)
            tok822_free_tree(tp->head);
+       next = tp->next;
        tok822_free(tp);
     }
     return (0);