From 4ed91be8670a0d0760bbaf23f7b5a6a16eac30ad Mon Sep 17 00:00:00 2001 From: David Sommerseth Date: Thu, 13 Sep 2012 17:50:00 +0200 Subject: Only lookup function symbols for the administration API if the context is correct This skips looking up all the eDBadmin*() functions if the context is unprivileged or the database interface is initialised by the OpenVPN plug-in Signed-off-by: David Sommerseth --- database/eurephiadb.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/database/eurephiadb.c b/database/eurephiadb.c index e53d67f..322e394 100644 --- a/database/eurephiadb.c +++ b/database/eurephiadb.c @@ -118,17 +118,20 @@ int eDBlink_init(eurephiaCTX *ctx, const char *dbdriver, const int minver) case 2: #ifdef ENABLE_EUREPHIADM - eDBadminAuthenticate = eGetSym(ctx, ctx->eurephia_driver, "eDBadminAuthenticate"); - eDBadminConfiguration = eGetSym(ctx, ctx->eurephia_driver, "eDBadminConfiguration"); - eDBadminUserAccount = eGetSym(ctx, ctx->eurephia_driver, "eDBadminUserAccount"); - eDBadminCertificate = eGetSym(ctx, ctx->eurephia_driver, "eDBadminCertificate"); - eDBadminUserCertsLink = eGetSym(ctx, ctx->eurephia_driver, "eDBadminUserCertsLink"); - eDBadminAccessLevel = eGetSym(ctx, ctx->eurephia_driver, "eDBadminAccessLevel"); - eDBadminFirewallProfiles = eGetSym(ctx, ctx->eurephia_driver, - "eDBadminFirewallProfiles"); - eDBadminGetLastlog = eGetSym(ctx, ctx->eurephia_driver, "eDBadminGetLastlog"); - eDBadminAttemptsLog = eGetSym(ctx, ctx->eurephia_driver, "eDBadminAttemptsLog"); - eDBadminBlacklist = eGetSym(ctx, ctx->eurephia_driver, "eDBadminBlacklist"); + if( (ctx->context_type != ECTX_NO_PRIVILEGES) && (ctx->context_type != ECTX_PLUGIN_AUTH) ) { + // These functions are only available in admin context + eDBadminAuthenticate = eGetSym(ctx, ctx->eurephia_driver, "eDBadminAuthenticate"); + eDBadminConfiguration = eGetSym(ctx, ctx->eurephia_driver, "eDBadminConfiguration"); + eDBadminUserAccount = eGetSym(ctx, ctx->eurephia_driver, "eDBadminUserAccount"); + eDBadminCertificate = eGetSym(ctx, ctx->eurephia_driver, "eDBadminCertificate"); + eDBadminUserCertsLink = eGetSym(ctx, ctx->eurephia_driver, "eDBadminUserCertsLink"); + eDBadminAccessLevel = eGetSym(ctx, ctx->eurephia_driver, "eDBadminAccessLevel"); + eDBadminFirewallProfiles = eGetSym(ctx, ctx->eurephia_driver, + "eDBadminFirewallProfiles"); + eDBadminGetLastlog = eGetSym(ctx, ctx->eurephia_driver, "eDBadminGetLastlog"); + eDBadminAttemptsLog = eGetSym(ctx, ctx->eurephia_driver, "eDBadminAttemptsLog"); + eDBadminBlacklist = eGetSym(ctx, ctx->eurephia_driver, "eDBadminBlacklist"); + } #endif case 1: -- cgit