X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fgssd%2Fsvcgssd_proc.c;h=3d67dc678b7f45fc8bdd63b328f28a7eddc3dafa;hp=b3a6ae8cda53d351e2a236867094564e9df89b33;hb=refs%2Ftags%2Fdebian%2F1%251.0.8-9;hpb=522084953475a815871973baf4dbd38f829a1f5a diff --git a/utils/gssd/svcgssd_proc.c b/utils/gssd/svcgssd_proc.c index b3a6ae8..3d67dc6 100644 --- a/utils/gssd/svcgssd_proc.c +++ b/utils/gssd/svcgssd_proc.c @@ -222,6 +222,21 @@ get_ids(gss_name_t client_name, gss_OID mech, struct svc_cred *cred) if (res < 0) { printerr(0, "WARNING: get_ids: unable to map " "name '%s' to a uid\n", sname); + /* + * -ENOENT means there was no mapping, any other error + * value means there was an error trying to do the + * mapping. + */ + if (res == -ENOENT) { + cred->cr_uid = -2; /* XXX */ + cred->cr_gid = -2; /* XXX */ + cred->cr_groups[0] = -2;/* XXX */ + cred->cr_ngroups = 1; + res = 0; + goto out_free; + } + printerr(0, "WARNING: get_ids: failed to map name '%s' " + "to uid/gid: %s\n", sname, strerror(-res)); goto out_free; } cred->cr_uid = uid;