driver/record.cpp: fix crash due to epgdata.info1 len more than buffer size

This commit is contained in:
[CST] Focus
2015-01-14 12:46:09 +03:00
parent f29f041905
commit cbdab7d8c0

View File

@@ -723,7 +723,7 @@ void CRecordInstance::MakeExtFileName(CZapitChannel * channel, std::string &File
std::string channel_name = channel->getName(); std::string channel_name = channel->getName();
if (!(channel_name.empty())) { if (!(channel_name.empty())) {
strcpy(buf, UTF8_TO_FILESYSTEM_ENCODING(channel_name.c_str())); snprintf(buf, sizeof(buf), UTF8_TO_FILESYSTEM_ENCODING(channel_name.c_str()));
ZapitTools::replace_char(buf); ZapitTools::replace_char(buf);
StringReplace(FilenameTemplate,"%C",buf); StringReplace(FilenameTemplate,"%C",buf);
} }
@@ -733,7 +733,7 @@ void CRecordInstance::MakeExtFileName(CZapitChannel * channel, std::string &File
CShortEPGData epgdata; CShortEPGData epgdata;
if(CEitManager::getInstance()->getEPGidShort(epgid, &epgdata)) { if(CEitManager::getInstance()->getEPGidShort(epgid, &epgdata)) {
if (!(epgdata.title.empty())) { if (!(epgdata.title.empty())) {
strcpy(buf, epgdata.title.c_str()); snprintf(buf, sizeof(buf), epgdata.title.c_str());
ZapitTools::replace_char(buf); ZapitTools::replace_char(buf);
StringReplace(FilenameTemplate,"%T",buf); StringReplace(FilenameTemplate,"%T",buf);
} }
@@ -741,7 +741,7 @@ void CRecordInstance::MakeExtFileName(CZapitChannel * channel, std::string &File
StringReplace(FilenameTemplate,"%T","no_title"); StringReplace(FilenameTemplate,"%T","no_title");
if (!(epgdata.info1.empty())) { if (!(epgdata.info1.empty())) {
strcpy(buf, epgdata.info1.c_str()); snprintf(buf, sizeof(buf), epgdata.info1.c_str());
ZapitTools::replace_char(buf); ZapitTools::replace_char(buf);
StringReplace(FilenameTemplate,"%I",buf); StringReplace(FilenameTemplate,"%I",buf);
} }