Per rfc3530 section 5.8: when unable to map a uid to a name, don't add the @domain to the "nobody" name. --- nfs-utils-1.0.7-kwc/utils/idmapd/idmapd.c | 29 ++++++++++++----------------- 1 files changed, 12 insertions(+), 17 deletions(-) diff -puN utils/idmapd/idmapd.c~idmapd_nomap_nobody utils/idmapd/idmapd.c --- nfs-utils-1.0.7/utils/idmapd/idmapd.c~idmapd_nomap_nobody 2005-11-03 10:57:25.618551000 -0500 +++ nfs-utils-1.0.7-kwc/utils/idmapd/idmapd.c 2005-11-03 10:57:25.659551000 -0500 @@ -761,17 +761,6 @@ nfsopen(struct idmap_client *ic) return (0); } -static int write_name(char *dest, char *localname, char *domain, size_t len) -{ - if (strlen(localname) + 1 + strlen(domain) + 1 > len) { - return -ENOMEM; /* XXX: Is there an -ETOOLONG? */ - } - strcpy(dest, localname); - strcat(dest, "@"); - strcat(dest, domain); - return 0; -} - static void idtonameres(struct idmap_msg *im) { @@ -783,16 +772,22 @@ idtonameres(struct idmap_msg *im) case IDMAP_TYPE_USER: ret = nfs4_uid_to_name(im->im_id, domain, im->im_name, sizeof(im->im_name)); - if (ret) - write_name(im->im_name, nobodyuser, domain, - sizeof(im->im_name)); + if (ret) { + if (strlen(nobodyuser) < sizeof(im->im_name)) + strcpy(im->im_name, nobodyuser); + else + strcpy(im->im_name, NFS4NOBODY_USER); + } break; case IDMAP_TYPE_GROUP: ret = nfs4_gid_to_name(im->im_id, domain, im->im_name, sizeof(im->im_name)); - if (ret) - write_name(im->im_name, nobodygroup, domain, - sizeof(im->im_name)); + if (ret) { + if (strlen(nobodygroup) < sizeof(im->im_name)) + strcpy(im->im_name, nobodygroup); + else + strcpy(im->im_name, NFS4NOBODY_GROUP); + } break; } /* XXX Hack? */ _