diff options
author | Josh Blum <josh@joshknows.com> | 2010-07-05 16:35:44 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-07-05 16:35:44 -0700 |
commit | c2039a8c92561fa5532d87cb9d875a3ad7b875c1 (patch) | |
tree | 231b1c4cc8d4576f857177f5f4e190aed9fcaca8 /host/lib/transport/gen_vrt_if_packet.py | |
parent | 8047f25c601c43d6941cd0d094360a56917917c8 (diff) | |
download | uhd-c2039a8c92561fa5532d87cb9d875a3ad7b875c1.tar.gz uhd-c2039a8c92561fa5532d87cb9d875a3ad7b875c1.tar.bz2 uhd-c2039a8c92561fa5532d87cb9d875a3ad7b875c1.zip |
uhd: code tweaks, extra error condition for vrt unpack
Diffstat (limited to 'host/lib/transport/gen_vrt_if_packet.py')
-rwxr-xr-x | host/lib/transport/gen_vrt_if_packet.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/host/lib/transport/gen_vrt_if_packet.py b/host/lib/transport/gen_vrt_if_packet.py index 536409b2e..7910ff60d 100755 --- a/host/lib/transport/gen_vrt_if_packet.py +++ b/host/lib/transport/gen_vrt_if_packet.py @@ -150,10 +150,10 @@ void vrt::if_hdr_unpack_$(suffix)( if_packet_info.packet_count = (vrt_hdr_word >> 16) & 0xf; //failure cases - if (packet_words32 == 0 or if_packet_info.num_packet_words32 < packet_words32) + if (if_packet_info.num_packet_words32 < packet_words32) throw std::runtime_error("bad vrt header or packet fragment"); if (vrt_hdr_word & (0x7 << 29)) - throw std::runtime_error("unsupported vrt packet type"); + throw std::runtime_error("bad vrt header or unsupported packet type"); boost::uint8_t pred = 0; if(vrt_hdr_word & $hex(0x1 << 28)) pred |= $hex($sid_p); @@ -209,6 +209,9 @@ void vrt::if_hdr_unpack_$(suffix)( #set $num_trailer_words = 0; #end if ########## Variables ########## + //another failure case + if (packet_words32 < $($num_header_words + $num_trailer_words)) + throw std::runtime_error("bad vrt header or invalid packet length"); if_packet_info.num_header_words32 = $num_header_words; if_packet_info.num_payload_words32 = packet_words32 - $($num_header_words + $num_trailer_words); break; |