diff --git a/src/add-ons/kernel/file_systems/nfs4/IdMap.cpp b/src/add-ons/kernel/file_systems/nfs4/IdMap.cpp index 37d755947b..9a02f8b3cf 100644 --- a/src/add-ons/kernel/file_systems/nfs4/IdMap.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/IdMap.cpp @@ -89,8 +89,8 @@ IdMap::_GetValue(const char* buffer, int32 code) if (code != MsgReply) return 0; - else - return value; + + return value; } while (true); } @@ -135,8 +135,9 @@ IdMap::_GetBuffer(T value, int32 code) if (code != MsgReply) { free(buffer); return NULL; - } else - return buffer; + } + + return buffer; } while (true); } diff --git a/src/add-ons/kernel/file_systems/nfs4/idmapper/IdMapper.cpp b/src/add-ons/kernel/file_systems/nfs4/idmapper/IdMapper.cpp index a0d6c490c8..5c8d2a9905 100644 --- a/src/add-ons/kernel/file_systems/nfs4/idmapper/IdMapper.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/idmapper/IdMapper.cpp @@ -62,6 +62,8 @@ AddDomain(const char* name) { uint32 fullLength = strlen(name) + strlen(gDomainName) + 2; char* fullName = reinterpret_cast(malloc(fullLength)); + if (fullName == NULL) + return NULL; strcpy(fullName, name); strcat(fullName, "@"); @@ -93,17 +95,23 @@ UIDToName(void* buffer) { uid_t userId = *reinterpret_cast(buffer); - const char* fullName = kNobodyName; + const char* name = NULL; struct passwd* userInfo = getpwuid(userId); if (userInfo != NULL) { - const char* name = userInfo->pw_name; - fullName = AddDomain(name); + name = userInfo->pw_name; + name = AddDomain(name); } - status_t result = write_port(gReplyPort, MsgReply, fullName, - strlen(fullName) + 1); - free(const_cast(fullName)); + status_t result; + + if (name != NULL) { + result = write_port(gReplyPort, MsgReply, name, strlen(name) + 1); + free(const_cast(name)); + } else { + result = write_port(gReplyPort, MsgReply, kNobodyName, + strlen(kNobodyName) + 1); + } return result; } @@ -133,17 +141,23 @@ GIDToName(void* buffer) { gid_t groupId = *reinterpret_cast(buffer); - const char* fullName = kNogroupName; + const char* name = NULL; struct group* groupInfo = getgrgid(groupId); if (groupInfo != NULL) { - const char* name = groupInfo->gr_name; - fullName = AddDomain(name); + name = groupInfo->gr_name; + name = AddDomain(name); } - status_t result = write_port(gReplyPort, MsgReply, fullName, - strlen(fullName) + 1); - free(const_cast(fullName)); + status_t result; + + if (name != NULL) { + result = write_port(gReplyPort, MsgReply, name, strlen(name) + 1); + free(const_cast(name)); + } else { + result = write_port(gReplyPort, MsgReply, kNogroupName, + strlen(kNogroupName) + 1); + } return result; } @@ -193,7 +207,7 @@ MainLoop() result = ParseRequest(code, buffer); free(buffer); - if (result == B_BAD_PORT_ID) + if (result != B_OK) return 0; } while (true); @@ -236,13 +250,13 @@ int main(int argc, char** argv) { gRequestPort = find_port(kRequestPortName); - if (gRequestPort == B_NAME_NOT_FOUND) { + if (gRequestPort < B_OK) { fprintf(stderr, "%s\n", strerror(gRequestPort)); return gRequestPort; } gReplyPort = find_port(kReplyPortName); - if (gReplyPort == B_NAME_NOT_FOUND) { + if (gReplyPort < B_OK) { fprintf(stderr, "%s\n", strerror(gReplyPort)); return gReplyPort; }