summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2013-10-16 13:05:52 -0400
committerSimo Sorce <simo@redhat.com>2013-10-16 13:09:34 -0400
commit6b8362d94b49365bff4d4235bd55f7a34aa3f0d4 (patch)
tree9d0ea4bd10f559380d40810d072b83ccb709410a
parenta258eec5d8de24f9221de3e13034140efd810b5c (diff)
downloadgss-ntlmssp-6b8362d94b49365bff4d4235bd55f7a34aa3f0d4.tar.gz
gss-ntlmssp-6b8362d94b49365bff4d4235bd55f7a34aa3f0d4.tar.xz
gss-ntlmssp-6b8362d94b49365bff4d4235bd55f7a34aa3f0d4.zip
Fix acquiring creds via cred_store
Make sure to set the cred type and copy in the name.
-rw-r--r--src/gss_creds.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/gss_creds.c b/src/gss_creds.c
index 5ccc344..8a7049c 100644
--- a/src/gss_creds.c
+++ b/src/gss_creds.c
@@ -155,6 +155,32 @@ static int get_creds_from_store(struct gssntlm_name *name,
uint32_t i;
int ret;
+ cred->type = GSSNTLM_CRED_NONE;
+
+ if (name) {
+ switch (name->type) {
+ case GSSNTLM_NAME_NULL:
+ cred->type = GSSNTLM_CRED_NONE;
+ break;
+ case GSSNTLM_NAME_ANON:
+ cred->type = GSSNTLM_CRED_ANON;
+ break;
+ case GSSNTLM_NAME_USER:
+ cred->type = GSSNTLM_CRED_USER;
+ ret = gssntlm_copy_name(name, &cred->cred.user.user);
+ break;
+ case GSSNTLM_NAME_SERVER:
+ cred->type = GSSNTLM_CRED_SERVER;
+ ret = gssntlm_copy_name(name, &cred->cred.server.name);
+ break;
+ default:
+ return EINVAL;
+ }
+ }
+
+ /* so far only user options can be defined in the cred_store */
+ if (cred->type != GSSNTLM_CRED_USER) return 0;
+
for (i = 0; i < cred_store->count; i++) {
if (strcmp(cred_store->elements[i].key, NTLM_CS_DOMAIN) == 0) {
/* ignore duplicates */