少年修仙传客户端代码仓库
Client_PangDeRong
2019-02-16 4cb337ccf0421b6fbb17cd3a41e0bf7282f9a9ed
3335 增加可能邮件格式错误导致数组越界的防护
1个文件已修改
92 ■■■■ 已修改文件
System/FriendSystem/MailAllModel.cs 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FriendSystem/MailAllModel.cs
@@ -369,69 +369,71 @@
        if (smatch.IsMatch(info.Text))
        {
            Match match = smatch.Match(info.Text);
            MailConfig _mailModel = MailConfig.Get(match.Groups[1].Value);
            List<string> _mailParalist = new List<string>();
            if (_mailModel != null)
            if(match.Groups.Count > 2)
            {
                mailTitleStr = _mailModel.Title;
                string strCont = "";
                if (match.Groups[2].Value != "")
                MailConfig _mailModel = MailConfig.Get(match.Groups[1].Value);
                List<string> _mailParalist = new List<string>();
                if (_mailModel != null)
                {
                    _mailParalist.Clear();
                    string paraStr = "";
                    paraStr = match.Groups[2].Value.Remove(0,1);
                    paraStr = paraStr.Remove(paraStr.Length-1, 1);
                    string[] paraArray = paraStr.Split(',');
                    for (int i = 0; i < paraArray.Length; i++)
                    mailTitleStr = _mailModel.Title;
                    string strCont = "";
                    if (match.Groups[2].Value != "")
                    {
                        string para = paraArray[i].Replace("'", "");
                        para = para.Trim();
                        _mailParalist.Add(para);
                    }
                    string[] mailCont = _mailModel.Content.Split(new string[] { "{0}" }, StringSplitOptions.None);
                    for (int i = 0; i < mailCont.Length; i++)
                    {
                        if (i < mailCont.Length - 1)
                        _mailParalist.Clear();
                        string paraStr = "";
                        paraStr = match.Groups[2].Value.Remove(0, 1);
                        paraStr = paraStr.Remove(paraStr.Length - 1, 1);
                        string[] paraArray = paraStr.Split(',');
                        for (int i = 0; i < paraArray.Length; i++)
                        {
                            switch (_mailModel.MailType)
                            string para = paraArray[i].Replace("'", "");
                            para = para.Trim();
                            _mailParalist.Add(para);
                        }
                        string[] mailCont = _mailModel.Content.Split(new string[] { "{0}" }, StringSplitOptions.None);
                        for (int i = 0; i < mailCont.Length; i++)
                        {
                            if (i < mailCont.Length - 1)
                            {
                                case "TodayDailyTask":
                                    strCont = StringUtility.Contact(strCont,mailCont[i],GetTodayDailyNotify(info.mailGetTime));
                                    break;
                                default:
                                    strCont = StringUtility.Contact(strCont, mailCont[i], _mailParalist[i]);
                                    break;
                                switch (_mailModel.MailType)
                                {
                                    case "TodayDailyTask":
                                        strCont = StringUtility.Contact(strCont, mailCont[i], GetTodayDailyNotify(info.mailGetTime));
                                        break;
                                    default:
                                        strCont = StringUtility.Contact(strCont, mailCont[i], _mailParalist[i]);
                                        break;
                                }
                            }
                        }
                        else
                        {
                            strCont = StringUtility.Contact(strCont,mailCont[i]);
                            else
                            {
                                strCont = StringUtility.Contact(strCont, mailCont[i]);
                            }
                        }
                    }
                }
                    mailContentstr = strCont;
                    string[] mailContentArray = info.Text.Split(new string[] { "<$_$>" }, StringSplitOptions.RemoveEmptyEntries);
                    if (mailContentArray.Length > 0)
                    {
                        FuncConfigConfig funcMailModel = FuncConfigConfig.Get(mailContentArray[0]);
                        if (funcMailModel != null)
                            mailSendPersonStr = funcMailModel.Numerical1;
                        else
                            mailSendPersonStr = mailContentArray[0];
                mailContentstr = strCont;
                string[] mailContentArray = info.Text.Split(new string[] { "<$_$>" }, StringSplitOptions.RemoveEmptyEntries);
                if (mailContentArray.Length > 0)
                {
                    FuncConfigConfig funcMailModel = FuncConfigConfig.Get(mailContentArray[0]);
                    if (funcMailModel != null)
                        mailSendPersonStr = funcMailModel.Numerical1;
                    else
                        mailSendPersonStr = mailContentArray[0];
                    }
                }
            }
        }
        else
        {
            DebugEx.Log("不需要解析模板邮件");
            string[] mailContentArray = info.Text.Split(new string[] { "<$_$>" }, StringSplitOptions.RemoveEmptyEntries);
            if (mailContentArray.Length > 0)
            if (mailContentArray.Length > 1)
            {
                FuncConfigConfig funcMailModel = FuncConfigConfig.Get(mailContentArray[0]);
                if (funcMailModel != null)