X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;ds=sidebyside;f=keydb_dynamic.c;h=9e4e3bcb7585e27decf07aa2a8ca22905d0a0573;hb=85187675424f3854869f1607afd8a1e84e536946;hp=040a045f67cf388038cbad5c4a4c574e836a7016;hpb=2458360e75aa46091f60c16e041c07bffe2edefb;p=onak.git
diff --git a/keydb_dynamic.c b/keydb_dynamic.c
index 040a045..9e4e3bc 100644
--- a/keydb_dynamic.c
+++ b/keydb_dynamic.c
@@ -13,8 +13,7 @@
* more details.
*
* You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * this program. If not, see .
*/
#include
@@ -214,6 +213,13 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg,
char *initname;
struct onak_dbctx *(*backend_init)(struct onak_db_config *, bool);
struct onak_dynamic_dbctx *privctx;
+ char *type;
+
+ if (dbcfg == NULL) {
+ logthing(LOGTHING_CRITICAL,
+ "No backend database configuration supplied.");
+ return NULL;
+ }
dbctx = malloc(sizeof(struct onak_dbctx));
@@ -228,9 +234,9 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg,
return (NULL);
}
+ type = dbcfg->type;
if (config.use_keyd) {
- free(config.db_backend);
- config.db_backend = strdup("keyd");
+ type = "keyd";
}
if (!config.db_backend) {
@@ -239,21 +245,21 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg,
}
if (config.backends_dir == NULL) {
- soname = malloc(strlen(dbcfg->type)
+ soname = malloc(strlen(type)
+ strlen("./libkeydb_")
+ strlen(".so")
+ 1);
- sprintf(soname, "./libkeydb_%s.so", dbcfg->type);
+ sprintf(soname, "./libkeydb_%s.so", type);
} else {
- soname = malloc(strlen(dbcfg->type)
+ soname = malloc(strlen(type)
+ strlen("/libkeydb_")
+ strlen(".so")
+ strlen(config.backends_dir)
+ 1);
sprintf(soname, "%s/libkeydb_%s.so", config.backends_dir,
- dbcfg->type);
+ type);
}
logthing(LOGTHING_INFO, "Loading dynamic backend: %s", soname);
@@ -272,7 +278,7 @@ struct onak_dbctx *keydb_dynamic_init(struct onak_db_config *dbcfg,
+ strlen("keydb_")
+ strlen("_init")
+ 1);
- sprintf(initname, "keydb_%s_init", dbcfg->type);
+ sprintf(initname, "keydb_%s_init", type);
*(void **) (&backend_init) = dlsym(privctx->backend_handle, initname);
free(initname);