From 108f2e90fac09808dfdda358b0b67ccdb8f23713 Mon Sep 17 00:00:00 2001 From: Reyk Floeter Date: Tue, 18 Aug 2015 11:18:41 +0200 Subject: From OPENBSD_5_7 (5.7-stable): MFC usr.sbin/httpd/server.c:1.62->1.63, req by florian@ We cannot log errors with server_close() before allocating clt_log evbuffer. server_close() calls server_log() which uses ctl_log. Crash reported by Daniel Jakots , thanks! OK benno --- server.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/server.c b/server.c index 813f945..0031578 100644 --- a/server.c +++ b/server.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server.c,v 1.60 2015/02/23 09:52:28 reyk Exp $ */ +/* $OpenBSD: server.c,v 1.60.2.1 2015/04/30 22:18:41 sthen Exp $ */ /* * Copyright (c) 2006 - 2015 Reyk Floeter @@ -851,6 +851,11 @@ server_accept(int fd, short event, void *arg) if ((clt = calloc(1, sizeof(*clt))) == NULL) goto err; + /* Pre-allocate log buffer */ + clt->clt_log = evbuffer_new(); + if (clt->clt_log == NULL) + goto err; + clt->clt_s = s; clt->clt_fd = -1; clt->clt_toread = TOREAD_UNLIMITED; @@ -898,13 +903,6 @@ server_accept(int fd, short event, void *arg) return; } - /* Pre-allocate log buffer */ - clt->clt_log = evbuffer_new(); - if (clt->clt_log == NULL) { - server_close(clt, "failed to allocate log buffer"); - return; - } - if (srv->srv_conf.flags & SRVFLAG_TLS) { event_again(&clt->clt_ev, clt->clt_s, EV_TIMEOUT|EV_READ, server_accept_tls, &clt->clt_tv_start, -- cgit v1.2.3-54-g00ecf