From 282162b4aa2e931d33e38fac4d576dfcd950ab20 Mon Sep 17 00:00:00 2001 From: Bram Matthys Date: Tue, 4 May 2021 08:36:45 +0200 Subject: [PATCH] Various small UnrealDB fixes --- src/modules/reputation.c | 1 + src/unrealdb.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/reputation.c b/src/modules/reputation.c index 8e2b0792d..96a16dd0f 100644 --- a/src/modules/reputation.c +++ b/src/modules/reputation.c @@ -522,6 +522,7 @@ int reputation_load_db_new(UnrealDB *db) e->score = score; e->last_seen = last_seen; add_reputation_entry(e); + safe_free(ip); } unrealdb_close(db); #ifdef BENCHMARK diff --git a/src/unrealdb.c b/src/unrealdb.c index 072afc629..3f75751f5 100644 --- a/src/unrealdb.c +++ b/src/unrealdb.c @@ -234,7 +234,7 @@ UnrealDB *unrealdb_open(const char *filename, UnrealDBMode mode, char *secret_bl secr = find_secret(secret_block); if (!secr) { - unrealdb_set_error(c, UNREALDB_ERROR_SECRET, "Secret block '%s' not found or invalid", secr->name); + unrealdb_set_error(c, UNREALDB_ERROR_SECRET, "Secret block '%s' not found or invalid", secret_block); goto unrealdb_open_fail; } @@ -379,6 +379,11 @@ UnrealDB *unrealdb_open(const char *filename, UnrealDBMode mode, char *secret_bl unrealdb_set_error(c, UNREALDB_ERROR_HEADER, "Header contains unknown cipher 0x%x", (int)c->config->cipher); goto unrealdb_open_fail; } + if (c->config->keylen > 1024) + { + unrealdb_set_error(c, UNREALDB_ERROR_HEADER, "Header is corrupt (keylen=%d)", (int)c->config->keylen); + goto unrealdb_open_fail; /* Something must be wrong, this makes no sense. */ + } c->config->key = safe_alloc_sensitive(c->config->keylen); dbcache = find_secret_cache(secr, c->config);