From: Art Cancro Date: Wed, 6 Sep 2023 03:04:50 +0000 (-0400) Subject: berkeley_db: cdb_next_item() use DB_REALLOC, not DB_MALLOC X-Git-Tag: v993~1 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=6dd87b26e89b297098ef28e593df480598c92967;p=citadel.git 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. --- 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);