]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.5.11 v3.5.11
authorWietse Venema <wietse@porcupine.org>
Sun, 13 Jun 2021 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Mon, 14 Jun 2021 14:43:17 +0000 (10:43 -0400)
postfix/HISTORY
postfix/README_FILES/BDAT_README
postfix/html/BDAT_README.html
postfix/proto/BDAT_README.html
postfix/src/global/mail_params.c
postfix/src/global/mail_version.h
postfix/src/util/slmdb.c

index 3bc1dc74a8835410e59f1ce23dcffae5972f692c..9c36cb4a9468b3d8f6674babac18678c2f422b10 100644 (file)
@@ -24926,3 +24926,25 @@ Apologies for any names omitted.
 
        Missing null pointer check (introduced: Postfix alpha) after
        null argv[0] value. File: global/mail_task.c.
+
+20210601
+
+       Bugfix (introduced: Postfix 2.11): the command "postmap
+       lmdb:/file/name" handled duplicate keys ungracefully,
+       discarding entries stored up to and including the duplicate
+       key, and causing a double free() call with lmdb versions
+       0.9.17 and later. Reported by Adi Prasaja; double free()
+       root cause analysis by Howard Chu. File: util/slmdb.c.
+
+20210609
+
+       Typo (introduced: Postfix 3.4): silent_discard should be
+       silent-discard. File: proto/BDAT_README.html.
+
+20210612
+
+       Support for Postfix 3.6 compatibility_level syntax, to avoid
+       fatal runtime errors when rolling back from Postfix 3.6 to
+       an earlier supported version, or when sharing Postfix 3.6
+       configuration files with an earlier supported Postfix
+       version. File: global/mail_params.c.
index 2dc1df35ce65f01f1462f82393f46c80ae16fb02..1248804099f623ef99d421a00c9074317a73f98a 100644 (file)
@@ -23,7 +23,7 @@ BDAT support is enabled by default. To disable BDAT support globally:
         # The logging alternative:
         smtpd_discard_ehlo_keywords = chunking
         # The non-logging alternative:
-        smtpd_discard_ehlo_keywords = chunking, silent_discard
+        smtpd_discard_ehlo_keywords = chunking, silent-discard
 
 Specify '-o smtpd_discard_ehlo_keywords=' in master.cf for the submission and
 smtps services, if you have clients that benefit from CHUNKING support.
index b8feeeb144eb7848c8f559efb3e0b979ca3b8f33..271aa06b78e67c9fe5a9a48e352ab1438cf214b6 100644 (file)
@@ -51,7 +51,7 @@ globally: </p>
     # The logging alternative:
     <a href="postconf.5.html#smtpd_discard_ehlo_keywords">smtpd_discard_ehlo_keywords</a> = chunking
     # The non-logging alternative:
-    <a href="postconf.5.html#smtpd_discard_ehlo_keywords">smtpd_discard_ehlo_keywords</a> = chunking, silent_discard
+    <a href="postconf.5.html#smtpd_discard_ehlo_keywords">smtpd_discard_ehlo_keywords</a> = chunking, silent-discard
 </pre>
 </blockquote>
 
index 60f0d1fa1b03e7dcaf859cad13cbcc05ae055d14..7839904aee4891901eb4541e1bd337461033468a 100644 (file)
@@ -51,7 +51,7 @@ globally: </p>
     # The logging alternative:
     smtpd_discard_ehlo_keywords = chunking
     # The non-logging alternative:
-    smtpd_discard_ehlo_keywords = chunking, silent_discard
+    smtpd_discard_ehlo_keywords = chunking, silent-discard
 </pre>
 </blockquote>
 
index 76d7c75eeba6f795edd0516a0ed07ec16f60e6aa..3f5d940c0a20f44eba124242f6be08d309fd0178 100644 (file)
@@ -834,6 +834,17 @@ void    mail_params_init()
     };
     const char *cp;
 
+    /*
+     * Ignore the Postfix >= 3.6 compatibility_level's minor and patch
+     * fields, to allow rollback from Postfix >= 3.6, and to allow
+     * configuration sharing with Postfix >= 3.6.
+     */
+    const char *compat_level_str;
+
+    if ((compat_level_str = mail_conf_lookup(VAR_COMPAT_LEVEL)) != 0
+      && ISDIGIT(compat_level_str[0]) && strchr(compat_level_str, '.') != 0)
+       set_mail_conf_int(VAR_COMPAT_LEVEL, atoi(compat_level_str));
+
     /*
      * Extract compatibility level first, so that we can determine what
      * parameters of interest are left at their legacy defaults.
index 9ebb46eaa73bba000b9a33c83fddad709782a0f6..a3bc58ea59f98017a9e0b9190d146bfe3adb4486 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      "20210411"
-#define MAIL_VERSION_NUMBER    "3.5.10"
+#define MAIL_RELEASE_DATE      "20210613"
+#define MAIL_VERSION_NUMBER    "3.5.11"
 
 #ifdef SNAPSHOT
 #define MAIL_VERSION_DATE      "-" MAIL_RELEASE_DATE
index cee0546192814263ad7aadef35b169a1a8e1305d..823d94033d179318c09861f3ff2b9ac67bec78d7 100644 (file)
@@ -386,12 +386,16 @@ static int slmdb_prepare(SLMDB *slmdb)
      * - With a bulk-mode transaction we commit when the database is closed.
      */
     if (slmdb->open_flags & O_TRUNC) {
-       if ((status = mdb_drop(slmdb->txn, slmdb->dbi, 0)) != 0)
+       if ((status = mdb_drop(slmdb->txn, slmdb->dbi, 0)) != 0) {
+           mdb_txn_abort(slmdb->txn);
+           slmdb->txn = 0;
            return (status);
+       }
        if ((slmdb->slmdb_flags & SLMDB_FLAG_BULK) == 0) {
-           if ((status = mdb_txn_commit(slmdb->txn)) != 0)
-               return (status);
+           status = mdb_txn_commit(slmdb->txn);
            slmdb->txn = 0;
+           if (status != 0)
+               return (status);
        }
     } else if ((slmdb->lmdb_flags & MDB_RDONLY) != 0
               || (slmdb->slmdb_flags & SLMDB_FLAG_BULK) == 0) {
@@ -582,11 +586,15 @@ int     slmdb_put(SLMDB *slmdb, MDB_val *mdb_key,
      * Do the update.
      */
     if ((status = mdb_put(txn, slmdb->dbi, mdb_key, mdb_value, flags)) != 0) {
-       mdb_txn_abort(txn);
        if (status != MDB_KEYEXIST) {
+           mdb_txn_abort(txn);
            if ((status = slmdb_recover(slmdb, status)) == 0)
                status = slmdb_put(slmdb, mdb_key, mdb_value, flags);
            SLMDB_API_RETURN(slmdb, status);
+       } else {
+           /* Abort non-bulk transaction only. */
+           if (slmdb->txn == 0)
+               mdb_txn_abort(txn);
        }
     }