summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2011-09-21 17:47:27 +0200
committerKarolin Seeger <kseeger@samba.org>2011-10-24 19:15:59 +0200
commit504b8175bd1742c9c15aff72967e1e8bc297826d (patch)
tree45aaeaa82ff0cae52bdd5ef70fd4918e388c411c
parenta911587b7b1a40aa9c1609291f36f5b02cd3da50 (diff)
downloadsamba-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.c24
-rw-r--r--source3/lib/netapi/netapi.h6
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);
/****************************************************************