From 576f8b1aae024e2c7fee73ffc9c8717778f81065 Mon Sep 17 00:00:00 2001 From: Bram Matthys Date: Mon, 3 May 2021 18:25:59 +0200 Subject: [PATCH] Fix bug with unrealdb caching --- src/unrealdb.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/unrealdb.c b/src/unrealdb.c index 9a71131cf..072afc629 100644 --- a/src/unrealdb.c +++ b/src/unrealdb.c @@ -279,6 +279,9 @@ UnrealDB *unrealdb_open(const char *filename, UnrealDBMode mode, char *secret_bl c->config->key = safe_alloc_sensitive(c->config->keylen); } + if (c->config->kdf == 0) + abort(); + /* Write KDF and cipher parameters */ if ((fwrite(&c->config->kdf, 1, sizeof(c->config->kdf), c->fd) != sizeof(c->config->kdf)) || (fwrite(&c->config->t_cost, 1, sizeof(c->config->t_cost), c->fd) != sizeof(c->config->t_cost)) || @@ -959,10 +962,15 @@ UnrealDBConfig *unrealdb_copy_config(UnrealDBConfig *src) { UnrealDBConfig *dst = safe_alloc(sizeof(UnrealDBConfig)); + dst->kdf = src->kdf; + dst->t_cost = src->t_cost; + dst->m_cost = src->m_cost; + dst->p_cost = src->p_cost; dst->saltlen = src->saltlen; dst->salt = safe_alloc(dst->saltlen); memcpy(dst->salt, src->salt, dst->saltlen); + dst->cipher = src->cipher; dst->keylen = src->keylen; if (dst->keylen) { @@ -970,9 +978,6 @@ UnrealDBConfig *unrealdb_copy_config(UnrealDBConfig *src) memcpy(dst->key, src->key, dst->keylen); } - dst->t_cost = src->t_cost; - dst->m_cost = src->m_cost; - dst->p_cost = src->p_cost; return dst; }