2010-02-27 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Discard metalink:file if its name attribute is empty string.
	Removed FileEntry instantiation in
	MetalinkParserController::setFileLengthOfEntry()
	* src/MetalinkParserController.cc
	* src/MetalinkParserStateV3Impl.cc
	* src/MetalinkParserStateV4Impl.cc
pull/1/head
Tatsuhiro Tsujikawa 2010-02-27 08:42:13 +00:00
parent dc2a51b54a
commit 20d78285a8
4 changed files with 13 additions and 5 deletions

View File

@ -1,3 +1,12 @@
2010-02-27 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Discard metalink:file if its name attribute is empty string.
Removed FileEntry instantiation in
MetalinkParserController::setFileLengthOfEntry()
* src/MetalinkParserController.cc
* src/MetalinkParserStateV3Impl.cc
* src/MetalinkParserStateV4Impl.cc
2010-02-27 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> 2010-02-27 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Discard torrent file if path data in it contains directory Discard torrent file if path data in it contains directory

View File

@ -96,10 +96,9 @@ void MetalinkParserController::setFileLengthOfEntry(uint64_t length)
return; return;
} }
if(_tEntry->file.isNull()) { if(_tEntry->file.isNull()) {
_tEntry->file.reset(new FileEntry(A2STR::NIL, length, 0)); return;
} else {
_tEntry->file->setLength(length);
} }
_tEntry->file->setLength(length);
_tEntry->sizeKnown = true; _tEntry->sizeKnown = true;
} }

View File

@ -114,7 +114,7 @@ void FilesMetalinkParserState::beginElement
std::vector<XmlAttr>::const_iterator itr = findAttr(attrs, NAME); std::vector<XmlAttr>::const_iterator itr = findAttr(attrs, NAME);
if(itr != attrs.end()) { if(itr != attrs.end()) {
std::string name = util::trim((*itr).value); std::string name = util::trim((*itr).value);
if(util::detectDirTraversal(name)) { if(name.empty() || util::detectDirTraversal(name)) {
return; return;
} }
stm->newEntryTransaction(); stm->newEntryTransaction();

View File

@ -97,7 +97,7 @@ void MetalinkMetalinkParserStateV4::beginElement
if(nsUri == METALINK4_NAMESPACE_URI && localname == FILE) { if(nsUri == METALINK4_NAMESPACE_URI && localname == FILE) {
std::vector<XmlAttr>::const_iterator itr = findAttr(attrs, NAME); std::vector<XmlAttr>::const_iterator itr = findAttr(attrs, NAME);
if(itr != attrs.end()) { if(itr != attrs.end()) {
if(util::detectDirTraversal((*itr).value)) { if((*itr).value.empty() || util::detectDirTraversal((*itr).value)) {
stm->setSkipTagState(); stm->setSkipTagState();
} else { } else {
stm->setFileStateV4(); stm->setFileStateV4();