diff --git a/ChangeLog b/ChangeLog index 238c3305..0233eb4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-03-13 Tatsuhiro Tsujikawa + + Slice/joinPath for name of single torrent. + * src/DefaultBtContext.cc + * test/DefaultBtContextTest.cc + 2009-03-13 Tatsuhiro Tsujikawa Updated man page: Documented --dry-run and --index-out diff --git a/src/DefaultBtContext.cc b/src/DefaultBtContext.cc index 482ce4d6..ccea61ab 100644 --- a/src/DefaultBtContext.cc +++ b/src/DefaultBtContext.cc @@ -181,8 +181,13 @@ void DefaultBtContext::extractFileEntries(const bencode::BDE& infoDict, BtContext::C_LENGTH.c_str()).str()); } totalLength = lengthData.i(); - // TODO slice name and apply Util::joinPath() - FileEntryHandle fileEntry(new FileEntry(_dir+"/"+name, totalLength, 0, urlList)); + // Slice path by '/' just in case nasty ".." is included in name + std::deque pathelems; + Util::slice(pathelems, name, '/'); + pathelems.push_front(_dir); + SharedHandle fileEntry + (new FileEntry(Util::joinPath(pathelems.begin(), pathelems.end()), + totalLength, 0, urlList)); fileEntries.push_back(fileEntry); } } diff --git a/test/DefaultBtContextTest.cc b/test/DefaultBtContextTest.cc index c69da648..dd0ad2b5 100644 --- a/test/DefaultBtContextTest.cc +++ b/test/DefaultBtContextTest.cc @@ -126,7 +126,7 @@ void DefaultBtContextTest::testGetFileEntriesSingle() { std::deque >::iterator itr = fileEntries.begin(); SharedHandle fileEntry1 = *itr; - CPPUNIT_ASSERT_EQUAL(std::string("./aria2-0.8.2.tar.bz2"), + CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.8.2.tar.bz2"), fileEntry1->getPath()); } @@ -319,7 +319,7 @@ void DefaultBtContextTest::testGetFileEntries_singleFileUrlList() { CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntries.size()); SharedHandle fileEntry1 = fileEntries.front(); - CPPUNIT_ASSERT_EQUAL(std::string("./aria2.tar.bz2"), + CPPUNIT_ASSERT_EQUAL(std::string("aria2.tar.bz2"), fileEntry1->getPath()); std::deque uris1 = fileEntry1->getAssociatedUris(); CPPUNIT_ASSERT_EQUAL((size_t)1, uris1.size());