aboutsummaryrefslogtreecommitdiff
path: root/src/lib/gssapi/mechglue/gssd_pname_to_uid.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/gssapi/mechglue/gssd_pname_to_uid.c')
-rw-r--r--src/lib/gssapi/mechglue/gssd_pname_to_uid.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/gssapi/mechglue/gssd_pname_to_uid.c b/src/lib/gssapi/mechglue/gssd_pname_to_uid.c
index 97e54d3..6eba56d 100644
--- a/src/lib/gssapi/mechglue/gssd_pname_to_uid.c
+++ b/src/lib/gssapi/mechglue/gssd_pname_to_uid.c
@@ -100,8 +100,10 @@ attr_pname_to_uid(OM_uint32 *minor,
&value,
&display_value,
&more);
- if (GSS_ERROR(major))
+ if (GSS_ERROR(major)) {
+ map_error(minor, mech);
break;
+ }
localLoginUser = malloc(value.length + 1);
if (localLoginUser == NULL) {
@@ -124,7 +126,8 @@ attr_pname_to_uid(OM_uint32 *minor,
major = GSS_S_COMPLETE;
*minor = 0;
break;
- }
+ } else
+ major = GSS_S_UNAVAILABLE;
}
#endif /* !NO_PASSWORD */
@@ -182,10 +185,13 @@ gss_pname_to_uid(OM_uint32 *minor,
major = GSS_S_UNAVAILABLE;
- if (mech->gss_pname_to_uid != NULL)
+ if (mech->gss_pname_to_uid != NULL) {
major = mech->gss_pname_to_uid(minor, mechNameP, mech_type, uidp);
+ if (GSS_ERROR(major))
+ map_error(minor, mech);
+ }
- if (major != GSS_S_COMPLETE)
+ if (GSS_ERROR(major))
major = attr_pname_to_uid(minor, mech, mechNameP, uidp);
if (mechName != GSS_C_NO_NAME)