mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-06-19 03:49:29 -04:00
Fixed possible crash in p3GRouter by checking return value of dynamic_cast.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8598 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
409db56a59
commit
e53f531271
1 changed files with 27 additions and 3 deletions
|
@ -357,17 +357,41 @@ void p3GRouter::handleLowLevelServiceItems()
|
||||||
RsItem *item = NULL;
|
RsItem *item = NULL;
|
||||||
|
|
||||||
while(NULL != (item = recvItem()))
|
while(NULL != (item = recvItem()))
|
||||||
handleLowLevelServiceItem(dynamic_cast<RsGRouterTransactionItem*>(item)) ;
|
{
|
||||||
|
RsGRouterTransactionItem *gtitem = dynamic_cast<RsGRouterTransactionItem*>(item);
|
||||||
|
if (gtitem)
|
||||||
|
{
|
||||||
|
handleLowLevelServiceItem(gtitem) ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delete(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void p3GRouter::handleLowLevelServiceItem(RsGRouterTransactionItem *item)
|
void p3GRouter::handleLowLevelServiceItem(RsGRouterTransactionItem *item)
|
||||||
{
|
{
|
||||||
switch(item->PacketSubType())
|
switch(item->PacketSubType())
|
||||||
{
|
{
|
||||||
case RS_PKT_SUBTYPE_GROUTER_TRANSACTION_ACKN: handleLowLevelTransactionAckItem(dynamic_cast<RsGRouterTransactionAcknItem*>(item)) ;
|
case RS_PKT_SUBTYPE_GROUTER_TRANSACTION_ACKN:
|
||||||
|
{
|
||||||
|
RsGRouterTransactionAcknItem *trans_ack_item = dynamic_cast<RsGRouterTransactionAcknItem*>(item);
|
||||||
|
if (trans_ack_item)
|
||||||
|
{
|
||||||
|
handleLowLevelTransactionAckItem(trans_ack_item) ;
|
||||||
|
}
|
||||||
break ;
|
break ;
|
||||||
case RS_PKT_SUBTYPE_GROUTER_TRANSACTION_CHUNK: handleLowLevelTransactionChunkItem(dynamic_cast<RsGRouterTransactionChunkItem*>(item)) ;
|
}
|
||||||
|
case RS_PKT_SUBTYPE_GROUTER_TRANSACTION_CHUNK:
|
||||||
|
{
|
||||||
|
RsGRouterTransactionChunkItem *chunk_item = dynamic_cast<RsGRouterTransactionChunkItem*>(item);
|
||||||
|
if (chunk_item)
|
||||||
|
{
|
||||||
|
handleLowLevelTransactionChunkItem(chunk_item) ;
|
||||||
|
}
|
||||||
break ;
|
break ;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
std::cerr << "p3GRouter::handleIncoming: Unknown packet subtype " << item->PacketSubType() << std::endl ;
|
std::cerr << "p3GRouter::handleIncoming: Unknown packet subtype " << item->PacketSubType() << std::endl ;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue