From: Martti Rannanjärvi Date: Tue, 11 Sep 2018 08:21:36 +0000 (+0300) Subject: driver-sqlite: Fix crash and event leak in driver_sqlite_query_s() X-Git-Tag: 2.3.9~1405 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b291ff1fd61b47639a2db99bd858c9511945f4ab;p=thirdparty%2Fdovecot%2Fcore.git driver-sqlite: Fix crash and event leak in driver_sqlite_query_s() --- diff --git a/src/lib-sql/driver-sqlite.c b/src/lib-sql/driver-sqlite.c index 32f4707ec7..3ba030c3cc 100644 --- a/src/lib-sql/driver-sqlite.c +++ b/src/lib-sql/driver-sqlite.c @@ -201,9 +201,14 @@ driver_sqlite_query_s(struct sql_db *_db, const char *query) { struct sqlite_db *db = (struct sqlite_db *)_db; struct sqlite_result *result; + struct event *event; result = i_new(struct sqlite_result, 1); - result->api.event = event_create(_db->event); + result->api.db = _db; + /* Temporarily store the event since result->api gets + * overwritten later here and we need to reset it. */ + event = event_create(_db->event); + result->api.event = event; if (driver_sqlite_connect(_db) < 0) { driver_sqlite_result_log(&result->api, query); @@ -223,9 +228,10 @@ driver_sqlite_query_s(struct sql_db *_db, const char *query) result->cols = 0; } } + result->api.db = _db; result->api.refcount = 1; - + result->api.event = event; return &result->api; }