diff --git a/zone/client.cpp b/zone/client.cpp index b6d91602c..fd1080797 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -6257,7 +6257,10 @@ void Client::DragCorpses() void Client::ConsentCorpses(const char* consent_name, bool deny) { - if (strcasecmp(consent_name, GetName()) == 0) { + if (!consent_name) { + return; + } + else if (strcasecmp(consent_name, GetName()) == 0) { MessageString(Chat::Red, CONSENT_YOURSELF); } else if (!consent_throttle_timer.Check()) { @@ -6266,9 +6269,9 @@ void Client::ConsentCorpses(const char* consent_name, bool deny) else { auto pack = new ServerPacket(ServerOP_Consent, sizeof(ServerOP_Consent_Struct)); ServerOP_Consent_Struct* scs = (ServerOP_Consent_Struct*)pack->pBuffer; - strcpy(scs->grantname, consent_name); - strcpy(scs->ownername, GetName()); - strcpy(scs->zonename, "Unknown"); + strn0cpy(scs->grantname, consent_name, sizeof(scs->grantname)); + strn0cpy(scs->ownername, GetName(), sizeof(scs->ownername)); + strn0cpy(scs->zonename, "Unknown", sizeof(scs->zonename)); scs->message_string_id = 0; scs->permission = deny ? 0 : 1; scs->zone_id = zone->GetZoneID(); diff --git a/zone/corpse.cpp b/zone/corpse.cpp index 734bfa937..3714ea7f7 100644 --- a/zone/corpse.cpp +++ b/zone/corpse.cpp @@ -662,21 +662,25 @@ void Corpse::DepopPlayerCorpse() { void Corpse::AddConsentName(const char* add_name) { - for (const auto& n : consent_names) { - if (strcasecmp(n.c_str(), add_name) == 0) { - return; + if (add_name) { + for (const auto& n : consent_names) { + if (strcasecmp(n.c_str(), add_name) == 0) { + return; + } } + consent_names.emplace_back(add_name); } - consent_names.emplace_back(add_name); } void Corpse::RemoveConsentName(const char* rem_name) { - consent_names.erase(std::remove_if(consent_names.begin(), consent_names.end(), - [rem_name](const std::string& n) { - return strcasecmp(n.c_str(), rem_name) == 0; - } - ), consent_names.end()); + if (rem_name) { + consent_names.erase(std::remove_if(consent_names.begin(), consent_names.end(), + [rem_name](const std::string& n) { + return strcasecmp(n.c_str(), rem_name) == 0; + } + ), consent_names.end()); + } } uint32 Corpse::CountItems() { diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index e1d90920f..2787d3c88 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -1489,8 +1489,8 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) // send the message to the client being granted or denied permission auto outapp = new EQApplicationPacket(OP_ConsentResponse, sizeof(ConsentResponse_Struct)); ConsentResponse_Struct* crs = (ConsentResponse_Struct*)outapp->pBuffer; - strcpy(crs->grantname, s->grantname); - strcpy(crs->ownername, s->ownername); + strn0cpy(crs->grantname, s->grantname, sizeof(crs->grantname)); + strn0cpy(crs->ownername, s->ownername, sizeof(crs->ownername)); crs->permission = s->permission; strn0cpy(crs->zonename, s->zonename, sizeof(crs->zonename)); grant_client->QueuePacket(outapp);