summaryrefslogtreecommitdiffstats
path: root/src/gss_names.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gss_names.c')
-rw-r--r--src/gss_names.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gss_names.c b/src/gss_names.c
index fe95aeb..7ccc3a0 100644
--- a/src/gss_names.c
+++ b/src/gss_names.c
@@ -244,6 +244,7 @@ int gssntlm_copy_name(struct gssntlm_name *src, struct gssntlm_name *dst)
int ret;
dst->type = src->type;
switch (src->type) {
+ case GSSNTLM_NAME_NULL:
case GSSNTLM_NAME_ANON:
break;
case GSSNTLM_NAME_USER:
@@ -302,6 +303,11 @@ uint32_t gssntlm_duplicate_name(uint32_t *minor_status,
in = (struct gssntlm_name *)input_name;
+ if (in->type == GSSNTLM_NAME_NULL) {
+ *dest_name = GSS_C_NO_NAME;
+ return GSS_S_COMPLETE;
+ }
+
out = calloc(1, sizeof(struct gssntlm_name));
if (!out) {
*minor_status = ENOMEM;
@@ -322,6 +328,8 @@ void gssntlm_int_release_name(struct gssntlm_name *name)
if (!name) return;
switch (name->type) {
+ case GSSNTLM_NAME_NULL:
+ return;
case GSSNTLM_NAME_ANON:
break;
case GSSNTLM_NAME_USER:
@@ -332,6 +340,7 @@ void gssntlm_int_release_name(struct gssntlm_name *name)
safefree(name->data.server.name);
break;
}
+ name->type = GSSNTLM_NAME_NULL;
}
uint32_t gssntlm_release_name(uint32_t *minor_status,