From 134344b79ebbda2ff765f7381e49da686bed9f7c Mon Sep 17 00:00:00 2001 From: Niels Provos Date: Fri, 16 May 2008 01:55:40 +0000 Subject: [PATCH] Fix use of freed memory in event_reinit; pointed out by Peter Postma svn:r834 --- ChangeLog | 1 + event.c | 2 +- test/regress.c | 8 +++++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d4ea87e..d4d7c1c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -100,6 +100,7 @@ Changes in current version: o provide a method for canceling ongoing http requests. o Make vsnprintf() returns consistent on win32. o Fix connection keep-alive behavior for HTTP/1.0 + o Fix use of freed memory in event_reinit; pointed out by Peter Postma Changes in 1.4.0: o allow \r or \n individually to separate HTTP headers instead of the standard "\r\n"; from Charles Kerr. diff --git a/event.c b/event.c index 5c383f62..20d46a42 100644 --- a/event.c +++ b/event.c @@ -334,7 +334,7 @@ event_reinit(struct event_base *base) if (base->evsel->dealloc != NULL) base->evsel->dealloc(base, base->evbase); - base->evbase = evsel->init(base); + evbase = base->evbase = evsel->init(base); if (base->evbase == NULL) event_errx(1, "%s: could not reinitialize event mechanism", __func__); diff --git a/test/regress.c b/test/regress.c index 379116ba..6850aeca 100644 --- a/test/regress.c +++ b/test/regress.c @@ -499,12 +499,14 @@ test_fork(void) exit(1); } + called = 0; + event_dispatch(); /* we do not send an EOF; simple_read_cb requires an EOF * to set test_ok. we just verify that the callback was * called. */ - exit(test_ok != 0 || called != 2); + exit(test_ok != 0 || called != 2 ? -2 : 76); } /* wait for the child to read the data */ @@ -517,8 +519,8 @@ test_fork(void) exit(1); } - if (WEXITSTATUS(status) != 0) { - fprintf(stderr, "FAILED (exit)\n"); + if (WEXITSTATUS(status) != 76) { + fprintf(stderr, "FAILED (exit): %d\n", WEXITSTATUS(status)); exit(1); } -- 2.50.0