diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-01-04 12:31:49 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-01-04 12:31:49 +0000 |
| commit | da4d9092b28863d7592cae17f1e97161bda91064 (patch) | |
| tree | fa26343a61f7747c2eab920c2158976c20afe015 /src/CompactPeerListProcessor.cc | |
| parent | 853a8ef6aa33c8116fda5db7ad6fd4af4b82933e (diff) | |
2008-01-04 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Fixed segmentation fault when bad torrent metainfo is parsed.
Added dynamic_cast properly to detect the misconfiguration of
metainfo
and then throw exception or skip it.
* src/DefaultBtContext.{h, cc}
* test/DefaultBtContextTest.cc
* src/AnnounceList.cc
* src/CompactPeerListProcessor.cc
* src/message.h
* src/DefaultBtAnnounce.{h, cc}
* test/DefaultBtAnnounceTest.cc
* src/BencodeVisitor.cc
Diffstat (limited to 'src/CompactPeerListProcessor.cc')
| -rw-r--r-- | src/CompactPeerListProcessor.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/CompactPeerListProcessor.cc b/src/CompactPeerListProcessor.cc index d51bc9aa..a3ddc70f 100644 --- a/src/CompactPeerListProcessor.cc +++ b/src/CompactPeerListProcessor.cc @@ -41,8 +41,10 @@ bool CompactPeerListProcessor::canHandle(const MetaEntry* peersEntry) const { Peers CompactPeerListProcessor::extractPeer(const MetaEntry* peersEntry) { Peers peers; - - const Data* peersData = (const Data*)peersEntry; + const Data* peersData = dynamic_cast<const Data*>(peersEntry); + if(!peersData) { + return peers; + } if(peersData->getLen()%6 == 0) { for(int32_t i = 0; i < peersData->getLen(); i += 6) { struct in_addr in; |
