On Fri, 1 Feb 2019 16:53:14 +0100
Sebastian Benoit <[email protected]> wrote:

> > +           if (clt->clt_remote_user == NULL &&
> > +               clt->clt_tls_ctx != NULL &&
> > +               (srv_conf->tls_flags & TLSFLAG_CA) &&
> > +               stravis(&user, tls_peer_cert_subject(clt->clt_tls_ctx),
> 
> tls_peer_cert_subject() can return NULL.

Fixed in patch below.

Thanks,
Karel

diff --git a/usr.sbin/httpd/server_http.c b/usr.sbin/httpd/server_http.c
index 9b13db2bca4..f0f30b93ebc 100644
--- a/usr.sbin/httpd/server_http.c
+++ b/usr.sbin/httpd/server_http.c
@@ -1712,6 +1712,13 @@ server_log_http(struct client *clt, unsigned int code, 
size_t len)
                if (clt->clt_remote_user &&
                    stravis(&user, clt->clt_remote_user, HTTPD_LOGVIS) == -1)
                        goto done;
+               if (clt->clt_remote_user == NULL &&
+                   clt->clt_tls_ctx != NULL &&
+                   (srv_conf->tls_flags & TLSFLAG_CA) &&
+                   tls_peer_cert_subject(clt->clt_tls_ctx) != NULL &&
+                   stravis(&user, tls_peer_cert_subject(clt->clt_tls_ctx),
+                               HTTPD_LOGVIS) == -1)
+                       goto done;
                if (desc->http_version &&
                    stravis(&version, desc->http_version, HTTPD_LOGVIS) == -1)
                        goto done;
@@ -1730,7 +1737,7 @@ server_log_http(struct client *clt, unsigned int code, 
size_t len)
                ret = evbuffer_add_printf(clt->clt_log,
                    "%s %s - %s [%s] \"%s %s%s%s%s%s\""
                    " %03d %zu \"%s\" \"%s\"\n",
-                   srv_conf->name, ip, clt->clt_remote_user == NULL ? "-" :
+                   srv_conf->name, ip, user == NULL ? "-" :
                    user, tstamp,
                    server_httpmethod_byid(desc->http_method),
                    desc->http_path == NULL ? "" : path,

Reply via email to