summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2012-09-13 17:50:00 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2012-09-13 17:50:00 +0200
commit4ed91be8670a0d0760bbaf23f7b5a6a16eac30ad (patch)
tree363f25d731ed009ef44342fc23e07866c0c4196e
parentef50b1ba878472e82ab499d4066c5a4a2b757741 (diff)
downloadeurephia-4ed91be8670a0d0760bbaf23f7b5a6a16eac30ad.tar.gz
eurephia-4ed91be8670a0d0760bbaf23f7b5a6a16eac30ad.tar.xz
eurephia-4ed91be8670a0d0760bbaf23f7b5a6a16eac30ad.zip
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 <dazo@users.sourceforge.net>
-rw-r--r--database/eurephiadb.c25
1 files 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: