From: Christian Herdtweck Date: Wed, 5 Nov 2014 15:00:20 +0000 (+0100) Subject: stop creating icmp packet parts from istream if earlier part failed X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=f238612c6f3d562bdf190a49d2d0bfb60f34bca5;p=pingcheck stop creating icmp packet parts from istream if earlier part failed --- diff --git a/src/icmp/icmpv4packet.cpp b/src/icmp/icmpv4packet.cpp index 6a20879..9b52e38 100644 --- a/src/icmp/icmpv4packet.cpp +++ b/src/icmp/icmpv4packet.cpp @@ -247,7 +247,12 @@ istream& operator>>( Icmpv4Packet &packet ) { - is >> packet.IpHeader >> packet.IcmpPayloadHeader >> packet.IcmpPayloadData; + if (is.good()) + is >> packet.IpHeader; + if (is.good()) + is >> packet.IcmpPayloadHeader; + if (is.good()) + is >> packet.IcmpPayloadData; return is; } diff --git a/src/icmp/icmpv6packet.cpp b/src/icmp/icmpv6packet.cpp index f45356e..7f78170 100644 --- a/src/icmp/icmpv6packet.cpp +++ b/src/icmp/icmpv6packet.cpp @@ -262,9 +262,17 @@ istream& operator>>( { #ifdef IPV6_DATA_PRESENT_IN_ISTREAM //TODO WHY IPv6 does not come like IPv4???? - is >> packet.IpHeader >> packet.IcmpPayloadHeader >> packet.IcmpPayloadData; + if (is.good()) + is >> packet.IpHeader; + if (is.good()) + is >> packet.IcmpPayloadHeader; + if (is.good()) + is >> packet.IcmpPayloadData; #else - is >> packet.IcmpPayloadHeader >> packet.IcmpPayloadData; + if (is.good()) + is >> packet.IcmpPayloadHeader; + if (is.good()) + is >> packet.IcmpPayloadData; #endif return is;