Avoid passing NULL to vprintf() by assigning a name to client processes. While
authoranton <anton@openbsd.org>
Sat, 27 Jan 2018 08:32:03 +0000 (08:32 +0000)
committeranton <anton@openbsd.org>
Sat, 27 Jan 2018 08:32:03 +0000 (08:32 +0000)
here rework the switch proc_title(), both clang and gcc will now warn if all
possible values are not enumerated.

ok gilles@

usr.sbin/smtpd/control.c
usr.sbin/smtpd/smtpd.c

index b1123e6..d3e5b69 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: control.c,v 1.120 2017/11/27 08:35:59 sunil Exp $     */
+/*     $OpenBSD: control.c,v 1.121 2018/01/27 08:32:03 anton Exp $     */
 
 /*
  * Copyright (c) 2012 Gilles Chehade <gilles@poolp.org>
@@ -336,6 +336,8 @@ control_accept(int listenfd, short event, void *arg)
        c->mproc.proc = PROC_CLIENT;
        c->mproc.handler = control_dispatch_ext;
        c->mproc.data = c;
+       if ((c->mproc.name = strdup(proc_title(c->mproc.proc))) == NULL)
+               fatal("strdup");
        mproc_init(&c->mproc, connfd);
        mproc_enable(&c->mproc);
        tree_xset(&ctl_conns, c->id, c);
index 03c2f80..5ca0499 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: smtpd.c,v 1.291 2017/11/21 12:20:34 eric Exp $        */
+/*     $OpenBSD: smtpd.c,v 1.292 2018/01/27 08:32:03 anton Exp $       */
 
 /*
  * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
@@ -1663,9 +1663,10 @@ proc_title(enum smtp_proc_type proc)
                return "pony express";
        case PROC_CA:
                return "klondike";
-       default:
-               return "unknown";
+       case PROC_CLIENT:
+               return "client";
        }
+       return "unknown";
 }
 
 const char *