Parcourir la source

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
Tatsuhiro Tsujikawa il y a 15 ans
Parent
commit
20d78285a8

+ 9 - 0
ChangeLog

@@ -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>
 
 	Discard torrent file if path data in it contains directory

+ 2 - 3
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;
 }
 

+ 1 - 1
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();

+ 1 - 1
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();