Fix send mail and send item commands

Server was crashing if no args or if no quotes were provided for args
This commit is contained in:
Elmsroth 2020-06-05 21:56:11 +01:00 committed by Antz
parent f521577336
commit a34d10afc6
2 changed files with 27 additions and 14 deletions

View file

@ -2022,6 +2022,11 @@ bool ChatHandler::HandleSaveAllCommand(char* /*args*/)
// Send mail by command // Send mail by command
bool ChatHandler::HandleSendMailCommand(char* args) bool ChatHandler::HandleSendMailCommand(char* args)
{ {
if (!*args)
{
return false;
}
// format: name "subject text" "mail text" // format: name "subject text" "mail text"
Player* target; Player* target;
ObjectGuid target_guid; ObjectGuid target_guid;
@ -2033,11 +2038,19 @@ bool ChatHandler::HandleSendMailCommand(char* args)
MailDraft draft; MailDraft draft;
// Subject and content should not be empty :
if (!*args)
{
return false;
}
else
{
// fill draft // fill draft
if (!HandleSendMailHelper(draft, args)) if (!HandleSendMailHelper(draft, args))
{ {
return false; return false;
} }
}
// from console show nonexistent sender // from console show nonexistent sender
MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM);

View file

@ -7728,14 +7728,14 @@ bool ChatHandler::HandleAccountSetAddonCommand(char* args)
bool ChatHandler::HandleSendMailHelper(MailDraft& draft, char* args) bool ChatHandler::HandleSendMailHelper(MailDraft& draft, char* args)
{ {
// format: "subject text" "mail text" // format: "subject text" "mail text"
std::string msgSubject = ExtractQuotedArg(&args); char* msgSubject = ExtractQuotedArg(&args);
if (msgSubject.empty()) if (!msgSubject)
{ {
return false; return false;
} }
std::string msgText = ExtractQuotedArg(&args); char* msgText = ExtractQuotedArg(&args);
if (msgText.empty()) if (!msgText)
{ {
return false; return false;
} }
@ -7767,8 +7767,8 @@ bool ChatHandler::HandleSendMassMailCommand(char* args)
return false; return false;
} }
// from console show nonexistent sender // GM mail
MailSender sender(MAIL_NORMAL, m_session ? m_session->GetPlayer()->GetObjectGuid().GetCounter() : 0, MAIL_STATIONERY_GM); MailSender sender(MAIL_NORMAL, (uint32)0, MAIL_STATIONERY_GM);
sMassMailMgr.AddMassMailTask(draft, sender, raceMask); sMassMailMgr.AddMassMailTask(draft, sender, raceMask);
@ -7781,14 +7781,14 @@ bool ChatHandler::HandleSendMassMailCommand(char* args)
bool ChatHandler::HandleSendItemsHelper(MailDraft& draft, char* args) bool ChatHandler::HandleSendItemsHelper(MailDraft& draft, char* args)
{ {
// format: "subject text" "mail text" item1[:count1] item2[:count2] ... item12[:count12] // format: "subject text" "mail text" item1[:count1] item2[:count2] ... item12[:count12]
std::string msgSubject = ExtractQuotedArg(&args); char* msgSubject = ExtractQuotedArg(&args);
if (msgSubject.empty()) if (!msgSubject)
{ {
return false; return false;
} }
std::string msgText = ExtractQuotedArg(&args); char* msgText = ExtractQuotedArg(&args);
if (msgText.empty()) if (!msgText)
{ {
return false; return false;
} }
@ -7928,8 +7928,8 @@ bool ChatHandler::HandleSendMoneyHelper(MailDraft& draft, char* args)
{ {
/// format: "subject text" "mail text" money /// format: "subject text" "mail text" money
std::string msgSubject = ExtractQuotedArg(&args); char* msgSubject = ExtractQuotedArg(&args);
if (msgSubject.empty()) if (!msgSubject)
{ {
return false; return false;
} }