do a plausibility check for interaction channel data

in the linkage descriptor

Change-Id: I7ebca539076b2b881e82fd6baec5bb223e778a52
Reviewed-on: https://code.wireshark.org/review/1896
Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
Tested-by: Martin Kaiser <wireshark@kaiser.cx>
This commit is contained in:
Martin Kaiser 2014-05-31 15:30:14 +02:00
parent 62fd14cbd7
commit 3ec1ec1caf
1 changed files with 7 additions and 1 deletions

View File

@ -1169,6 +1169,13 @@ proto_mpeg_descriptor_dissect_linkage(tvbuff_t *tvb, guint offset, guint len, pr
proto_tree_add_item(tree, hf_mpeg_descr_linkage_event_simulcast, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_mpeg_descr_linkage_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
} else if (linkage_type == 0x81) {
/* linkage type 0x81 is "user defined" in the DVB-SI spec (EN 300468)
it is defined in the interaction channel spec (EN 301790)
it seems that in practice, 0x81 is also used for other purposes than interaction channel
if the following data really belongs to interaction channel, we need at least another 7 bytes */
if (offset+7>end)
return;
proto_tree_add_item(tree, hf_mpeg_descr_linkage_interactive_network_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@ -1177,7 +1184,6 @@ proto_mpeg_descriptor_dissect_linkage(tvbuff_t *tvb, guint offset, guint len, pr
offset += 1;
while (population_id_loop_count--) {
population_id_base = tvb_get_ntohs(tvb, offset);
population_id_mask = tvb_get_ntohs(tvb, offset + 2);
pi = proto_tree_add_uint_format_value(tree, hf_mpeg_descr_linkage_population_id, tvb, offset, 4,