diff options
Diffstat (limited to 'src/lib/gssapi/mechglue/gssd_pname_to_uid.c')
-rw-r--r-- | src/lib/gssapi/mechglue/gssd_pname_to_uid.c | 14 |
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) |