]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.2.22 postfix-3.2 v3.2.22
authorWietse Venema <wietse@porcupine.org>
Sun, 11 Apr 2021 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Mon, 12 Apr 2021 22:10:45 +0000 (18:10 -0400)
postfix/HISTORY
postfix/src/global/haproxy_srvr.c
postfix/src/global/mail_task.c
postfix/src/global/mail_version.h
postfix/src/util/dict_inline.c

index 62a68c2601fcacd4551006f5fe69a8292482537e..ffc1f5094dfc2a316a6897dc392086dda0e3f1ed 100644 (file)
@@ -23430,3 +23430,17 @@ Apologies for any names omitted.
        "dane" when smtp_tls_security_level is "dane", otherwise it is
        "may". File: global/mail_params.h.
 
+20210411
+
+       Null pointer bug (introduced: Postfix 3.0) after an inline:
+       table syntax error in main.cf or master.cf. Found by Coverity,
+       reported by Jaroslav Skarvada. Based on fix by Viktor
+       Dukhovni. File: util/dict_inline.c.
+
+       Incomplete null pointer check (introduced: Postfix 2.10)
+       after truncated HaProxy version 1 handshake message. Found
+       by Coverity, reported by Jaroslav Skarvada. Fix by Viktor
+       Dukhovni. File: global/haproxy_srvr.c.
+
+       Missing null pointer check (introduced: Postfix alpha) after
+       null argv[0] value. File: global/mail_task.c.
index db3d0c1da5982700dd1148b1cb9ca82d77e6ffe6..9779985d80dcbe32d1076e2b6195881226610bc6 100644 (file)
@@ -59,6 +59,8 @@
 
 static INET_PROTO_INFO *proto_info;
 
+#define STR_OR_NULL(str) ((str) ? (str) : "(null)")
+
 /* haproxy_srvr_parse_lit - extract and validate string literal */
 
 static int haproxy_srvr_parse_lit(const char *str,...)
@@ -68,7 +70,7 @@ static int haproxy_srvr_parse_lit(const char *str,...)
     int     result = -1;
 
     if (msg_verbose)
-       msg_info("haproxy_srvr_parse: %s", str);
+       msg_info("haproxy_srvr_parse: %s", STR_OR_NULL(str));
 
     if (str != 0) {
        va_start(ap, str);
@@ -85,8 +87,10 @@ static int haproxy_srvr_parse_lit(const char *str,...)
 static int haproxy_srvr_parse_proto(const char *str, int *addr_family)
 {
     if (msg_verbose)
-       msg_info("haproxy_srvr_parse: proto=%s", str);
+       msg_info("haproxy_srvr_parse: proto=%s", STR_OR_NULL(str));
 
+    if (str == 0)
+       return (-1);
 #ifdef AF_INET6
     if (strcasecmp(str, "TCP6") == 0) {
        if (strchr((char *) proto_info->sa_family_list, AF_INET6) != 0) {
@@ -110,7 +114,8 @@ static int haproxy_srvr_parse_addr(const char *str, MAI_HOSTADDR_STR *addr,
                                           int addr_family)
 {
     if (msg_verbose)
-       msg_info("haproxy_srvr_parse: addr=%s proto=%d", str, addr_family);
+       msg_info("haproxy_srvr_parse: addr=%s proto=%d",
+                STR_OR_NULL(str), addr_family);
 
     if (str == 0 || strlen(str) >= sizeof(MAI_HOSTADDR_STR))
        return (-1);
@@ -145,7 +150,7 @@ static int haproxy_srvr_parse_addr(const char *str, MAI_HOSTADDR_STR *addr,
 static int haproxy_srvr_parse_port(const char *str, MAI_SERVPORT_STR *port)
 {
     if (msg_verbose)
-       msg_info("haproxy_srvr_parse: port=%s", str);
+       msg_info("haproxy_srvr_parse: port=%s", STR_OR_NULL(str));
     if (str == 0 || strlen(str) >= sizeof(MAI_SERVPORT_STR)
        || !valid_hostport(str, DONT_GRIPE)) {
        return (-1);
index b1df611d40bc28acdef4e1338ab470231694e04d..893c338c18ff2036ee659cc839dc6be41694c387 100644 (file)
@@ -52,6 +52,8 @@ const char *mail_task(const char *argv0)
     const char *slash;
     const char *tag;
 
+    if (argv0 == 0)
+       argv0 = "unknown";
     if (canon_name == 0)
        canon_name = vstring_alloc(10);
     if ((slash = strrchr(argv0, '/')) != 0 && slash[1])
index 8932334e5947ad64c9f9555e57cfba3f7fb64783..3c52722cc09e4428579e7d8b939ee7359241a641 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      "20210117"
-#define MAIL_VERSION_NUMBER    "3.2.21"
+#define MAIL_RELEASE_DATE      "20210411"
+#define MAIL_VERSION_NUMBER    "3.2.22"
 
 #ifdef SNAPSHOT
 #define MAIL_VERSION_DATE      "-" MAIL_RELEASE_DATE
index 667ae8f9d4786d86d40a94cfb4e9b1a5476a41c0..c87919e9caf26bebe5a4248c0985391f21cbbb89 100644 (file)
@@ -108,9 +108,9 @@ DICT   *dict_inline_open(const char *name, int open_flags, int dict_flags)
     dict = dict_open3(DICT_TYPE_HT, name, open_flags, dict_flags);
     dict_type_override(dict, DICT_TYPE_INLINE);
     while ((nameval = mystrtokq(&cp, CHARS_COMMA_SP, CHARS_BRACE)) != 0) {
-       if ((nameval[0] != CHARS_BRACE[0]
-            || (err = xperr = extpar(&nameval, CHARS_BRACE, EXTPAR_FLAG_STRIP)) == 0)
-           && (err = split_qnameval(nameval, &vname, &value)) != 0)
+       if (nameval[0] == CHARS_BRACE[0])
+           err = xperr = extpar(&nameval, CHARS_BRACE, EXTPAR_FLAG_STRIP);
+       if (err != 0 || (err = split_qnameval(nameval, &vname, &value)) != 0)
            break;
 
        /* No duplicate checks. See comments in dict_thash.c. */