diff options
author | Günther Deschner <gd@samba.org> | 2011-09-21 17:47:27 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2011-10-24 19:15:59 +0200 |
commit | 504b8175bd1742c9c15aff72967e1e8bc297826d (patch) | |
tree | 45aaeaa82ff0cae52bdd5ef70fd4918e388c411c | |
parent | a911587b7b1a40aa9c1609291f36f5b02cd3da50 (diff) | |
download | samba-504b8175bd1742c9c15aff72967e1e8bc297826d.tar.gz samba-504b8175bd1742c9c15aff72967e1e8bc297826d.tar.xz samba-504b8175bd1742c9c15aff72967e1e8bc297826d.zip |
s3-netapi: allow to use default krb5 credential cache for libnetapi users.
Guenther
(cherry picked from commit 52e5c8002f1ccd417eaf56f0c1c9abb9d13bb7d6)
-rw-r--r-- | source3/lib/netapi/netapi.c | 24 | ||||
-rw-r--r-- | source3/lib/netapi/netapi.h | 6 |
2 files changed, 23 insertions, 7 deletions
diff --git a/source3/lib/netapi/netapi.c b/source3/lib/netapi/netapi.c index bde6fd823fd..34a88a9de57 100644 --- a/source3/lib/netapi/netapi.c +++ b/source3/lib/netapi/netapi.c @@ -55,7 +55,6 @@ NET_API_STATUS libnetapi_init(struct libnetapi_ctx **context) { NET_API_STATUS status; struct libnetapi_ctx *ctx = NULL; - char *krb5_cc_env = NULL; if (stat_ctx && libnetapi_initialized) { *context = stat_ctx; @@ -101,12 +100,6 @@ NET_API_STATUS libnetapi_init(struct libnetapi_ctx **context) BlockSignals(True, SIGPIPE); - krb5_cc_env = getenv(KRB5_ENV_CCNAME); - if (!krb5_cc_env || (strlen(krb5_cc_env) == 0)) { - ctx->krb5_cc_env = talloc_strdup(frame, "MEMORY:libnetapi"); - setenv(KRB5_ENV_CCNAME, ctx->krb5_cc_env, 1); - } - if (getenv("USER")) { ctx->username = talloc_strdup(frame, getenv("USER")); } else { @@ -250,6 +243,23 @@ NET_API_STATUS libnetapi_set_use_kerberos(struct libnetapi_ctx *ctx) return NET_API_STATUS_SUCCESS; } +/**************************************************************** +****************************************************************/ + +NET_API_STATUS libnetapi_set_use_memory_krb5_ccache(struct libnetapi_ctx *ctx) +{ + ctx->krb5_cc_env = talloc_strdup(ctx, "MEMORY:libnetapi"); + if (!ctx->krb5_cc_env) { + return W_ERROR_V(WERR_NOMEM); + } + setenv(KRB5_ENV_CCNAME, ctx->krb5_cc_env, 1); + ctx->use_memory_krb5_ccache = 1; + return NET_API_STATUS_SUCCESS; +} + +/**************************************************************** +****************************************************************/ + NET_API_STATUS libnetapi_set_use_ccache(struct libnetapi_ctx *ctx) { ctx->use_ccache = true; diff --git a/source3/lib/netapi/netapi.h b/source3/lib/netapi/netapi.h index 8976ebd4ebd..069d526f4b5 100644 --- a/source3/lib/netapi/netapi.h +++ b/source3/lib/netapi/netapi.h @@ -1319,6 +1319,7 @@ struct libnetapi_ctx { char *krb5_cc_env; int use_kerberos; int use_ccache; + int use_memory_krb5_ccache; int disable_policy_handle_cache; void *private_data; @@ -1376,6 +1377,11 @@ NET_API_STATUS libnetapi_set_use_ccache(struct libnetapi_ctx *ctx); /**************************************************************** ****************************************************************/ +NET_API_STATUS libnetapi_set_use_memory_krb5_ccache(struct libnetapi_ctx *ctx); + +/**************************************************************** +****************************************************************/ + const char *libnetapi_errstr(NET_API_STATUS status); /**************************************************************** |