Skip to content

Commit 49b1a9b

Browse files
committed
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 <vigdis AT chown DOT me>, thanks! OK benno
1 parent 423631c commit 49b1a9b

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

usr.sbin/httpd/server.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $OpenBSD: server.c,v 1.62 2015/04/11 14:52:49 jsing Exp $ */
1+
/* $OpenBSD: server.c,v 1.63 2015/04/23 16:59:28 florian Exp $ */
22

33
/*
44
* Copyright (c) 2006 - 2015 Reyk Floeter <reyk@openbsd.org>
@@ -852,6 +852,11 @@ server_accept(int fd, short event, void *arg)
852852
if ((clt = calloc(1, sizeof(*clt))) == NULL)
853853
goto err;
854854

855+
/* Pre-allocate log buffer */
856+
clt->clt_log = evbuffer_new();
857+
if (clt->clt_log == NULL)
858+
goto err;
859+
855860
clt->clt_s = s;
856861
clt->clt_fd = -1;
857862
clt->clt_toread = TOREAD_UNLIMITED;
@@ -899,13 +904,6 @@ server_accept(int fd, short event, void *arg)
899904
return;
900905
}
901906

902-
/* Pre-allocate log buffer */
903-
clt->clt_log = evbuffer_new();
904-
if (clt->clt_log == NULL) {
905-
server_close(clt, "failed to allocate log buffer");
906-
return;
907-
}
908-
909907
if (srv->srv_conf.flags & SRVFLAG_TLS) {
910908
event_again(&clt->clt_ev, clt->clt_s, EV_TIMEOUT|EV_READ,
911909
server_accept_tls, &clt->clt_tv_start,

0 commit comments

Comments
 (0)