]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
LMDB: Add a separate mlm_setup0() to separate loading from setup
authorHoward Chu <hyc@openldap.org>
Wed, 25 Sep 2024 17:23:31 +0000 (18:23 +0100)
committerHoward Chu <hyc@openldap.org>
Wed, 25 Sep 2024 17:23:31 +0000 (18:23 +0100)
libraries/liblmdb/module.c
libraries/liblmdb/module.h

index 52a24eb0191786d853689d263e3fbff7e309c119..16fefa96c0a071cf91ea8b422bf69a9e1ef2e410 100644 (file)
@@ -76,26 +76,31 @@ void mlm_unload(void *mlm)
 #endif
 }
 
+void mlm_setup0(MDB_env *env, MDB_crypto_funcs *cf, const char *password)
+{
+       MDB_val enckey = {0};
+       if (cf->mcf_sumfunc) {
+               mdb_env_set_checksum(env, cf->mcf_sumfunc, cf->mcf_sumsize);
+       }
+       if (cf->mcf_encfunc && password) {
+               char keybuf[2048];
+               enckey.mv_data = keybuf;
+               enckey.mv_size = cf->mcf_keysize;
+               if (cf->mcf_str2key)
+                       cf->mcf_str2key(password, &enckey);
+               else
+                       strncpy(enckey.mv_data, password, enckey.mv_size);
+               mdb_env_set_encrypt(env, cf->mcf_encfunc, &enckey, cf->mcf_esumsize);
+               memset(enckey.mv_data, 0, enckey.mv_size);
+       }
+}
+
 void *mlm_setup(MDB_env *env, const char *file, const char *password, char **errmsg)
 {
        MDB_crypto_funcs *cf;
-       MDB_val enckey = {0};
        void *mlm = mlm_load(file, NULL, &cf, errmsg);
        if (mlm) {
-               if (cf->mcf_sumfunc) {
-                       mdb_env_set_checksum(env, cf->mcf_sumfunc, cf->mcf_sumsize);
-               }
-               if (cf->mcf_encfunc && password) {
-                       char keybuf[2048];
-                       enckey.mv_data = keybuf;
-                       enckey.mv_size = cf->mcf_keysize;
-                       if (cf->mcf_str2key)
-                               cf->mcf_str2key(password, &enckey);
-                       else
-                               strncpy(enckey.mv_data, password, enckey.mv_size);
-                       mdb_env_set_encrypt(env, cf->mcf_encfunc, &enckey, cf->mcf_esumsize);
-                       memset(enckey.mv_data, 0, enckey.mv_size);
-               }
+               mlm_setup0(env, cf, password);
        }
        return mlm;
 }
index 13d4494dd8b592be7f1891d05957b5328108acbb..bd5fb3ff1457fd22d1ca1d2ff8b0ddddfb161b26 100644 (file)
@@ -14,3 +14,4 @@
 void *mlm_load(const char *file, const char *name, MDB_crypto_funcs **mcf_ptr, char **errmsg);
 void mlm_unload(void *lm);
 void *mlm_setup(MDB_env *env, const char *file, const char *password, char **errmsg);
+void mlm_setup0(MDB_env *env, MDB_crypto_funcs *cf, const char *password);