diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2012-09-13 17:50:00 +0200 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2012-09-13 17:50:00 +0200 |
commit | 4ed91be8670a0d0760bbaf23f7b5a6a16eac30ad (patch) | |
tree | 363f25d731ed009ef44342fc23e07866c0c4196e /database | |
parent | ef50b1ba878472e82ab499d4066c5a4a2b757741 (diff) | |
download | eurephia-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>
Diffstat (limited to 'database')
-rw-r--r-- | database/eurephiadb.c | 25 |
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: |