diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-27 08:42:13 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-27 08:42:13 +0000 |
| commit | 20d78285a865b79e370175b85c96728f6fd54bd9 (patch) | |
| tree | f5f26237988d7d19a1a2d185f21f21592515dace | |
| parent | dc2a51b54a5ef934109edd8416f82a0e050657b2 (diff) | |
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
| -rw-r--r-- | ChangeLog | 9 | ||||
| -rw-r--r-- | src/MetalinkParserController.cc | 5 | ||||
| -rw-r--r-- | src/MetalinkParserStateV3Impl.cc | 2 | ||||
| -rw-r--r-- | src/MetalinkParserStateV4Impl.cc | 2 |
4 files changed, 13 insertions, 5 deletions
@@ -1,5 +1,14 @@ 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> + Discard torrent file if path data in it contains directory traversal directives. Discard metalink:file element in Metalink3 format if its name attribute contains directory traversal diff --git a/src/MetalinkParserController.cc b/src/MetalinkParserController.cc index cdb97d32..d119bec7 100644 --- a/src/MetalinkParserController.cc +++ b/src/MetalinkParserController.cc @@ -96,10 +96,9 @@ void MetalinkParserController::setFileLengthOfEntry(uint64_t length) return; } if(_tEntry->file.isNull()) { - _tEntry->file.reset(new FileEntry(A2STR::NIL, length, 0)); - } else { - _tEntry->file->setLength(length); + return; } + _tEntry->file->setLength(length); _tEntry->sizeKnown = true; } diff --git a/src/MetalinkParserStateV3Impl.cc b/src/MetalinkParserStateV3Impl.cc index 33fb1309..c4068836 100644 --- a/src/MetalinkParserStateV3Impl.cc +++ b/src/MetalinkParserStateV3Impl.cc @@ -114,7 +114,7 @@ void FilesMetalinkParserState::beginElement std::vector<XmlAttr>::const_iterator itr = findAttr(attrs, NAME); if(itr != attrs.end()) { std::string name = util::trim((*itr).value); - if(util::detectDirTraversal(name)) { + if(name.empty() || util::detectDirTraversal(name)) { return; } stm->newEntryTransaction(); diff --git a/src/MetalinkParserStateV4Impl.cc b/src/MetalinkParserStateV4Impl.cc index ed558ee0..fae41831 100644 --- a/src/MetalinkParserStateV4Impl.cc +++ b/src/MetalinkParserStateV4Impl.cc @@ -97,7 +97,7 @@ void MetalinkMetalinkParserStateV4::beginElement if(nsUri == METALINK4_NAMESPACE_URI && localname == FILE) { std::vector<XmlAttr>::const_iterator itr = findAttr(attrs, NAME); if(itr != attrs.end()) { - if(util::detectDirTraversal((*itr).value)) { + if((*itr).value.empty() || util::detectDirTraversal((*itr).value)) { stm->setSkipTagState(); } else { stm->setFileStateV4(); |
