From 6dd87b26e89b297098ef28e593df480598c92967 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Tue, 5 Sep 2023 23:04:50 -0400 Subject: [PATCH] berkeley_db: cdb_next_item() use DB_REALLOC, not DB_MALLOC Fixes a 'Brown Paper Bug' that will leak memory ... catastrophically if ctdldump is run on a big db. --- citadel/server/backends/berkeley_db/berkeley_db.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/citadel/server/backends/berkeley_db/berkeley_db.c b/citadel/server/backends/berkeley_db/berkeley_db.c index b36c3c105..59b29ce7f 100644 --- a/citadel/server/backends/berkeley_db/berkeley_db.c +++ b/citadel/server/backends/berkeley_db/berkeley_db.c @@ -558,8 +558,8 @@ struct cdbkeyval bdb_next_item(int cdb) { memset(&kv, 0, sizeof(struct cdbkeyval)); // reuse memory from the previous call. - TSD->dbkey[cdb].flags = DB_DBT_MALLOC; - TSD->dbdata[cdb].flags = DB_DBT_MALLOC; + TSD->dbkey[cdb].flags = DB_DBT_REALLOC; + TSD->dbdata[cdb].flags = DB_DBT_REALLOC; assert(TSD->cursors[cdb] != NULL); ret = TSD->cursors[cdb]->c_get(TSD->cursors[cdb], &TSD->dbkey[cdb], &TSD->dbdata[cdb], DB_NEXT); -- 2.39.2