aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2014-02-26 13:21:09 +0300
committerMartin Kaiser <wireshark@kaiser.cx>2014-03-03 15:24:11 +0000
commite6d241597e623cc15ff98c4533f5cdd543094641 (patch)
tree0746cc82058e66c0e32bec36619c5e635bbc6b11
parent0156add5e90c3c0e17e0612e884b1ccb2c35fe05 (diff)
skip empty service provider name and empty service name
Change-Id: I355600320865a9c7c17093d37fc693b02f0a7f0c Reviewed-on: https://code.wireshark.org/review/457 Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
-rw-r--r--epan/dissectors/packet-mpeg-descriptor.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/epan/dissectors/packet-mpeg-descriptor.c b/epan/dissectors/packet-mpeg-descriptor.c
index 9b8a668b69..f48b5b13ec 100644
--- a/epan/dissectors/packet-mpeg-descriptor.c
+++ b/epan/dissectors/packet-mpeg-descriptor.c
@@ -1007,33 +1007,37 @@ value_string_ext mpeg_descr_service_type_vals_ext = VALUE_STRING_EXT_INIT(mpeg_d
static void
proto_mpeg_descriptor_dissect_service(tvbuff_t *tvb, guint offset, proto_tree *tree)
{
- guint8 descr_len, name_len;
+ guint8 prov_len, name_len;
guint enc_len;
dvb_encoding_e encoding;
proto_tree_add_item(tree, hf_mpeg_descr_service_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- descr_len = tvb_get_guint8(tvb, offset);
+ prov_len = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_mpeg_descr_service_provider_name_length, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- enc_len = dvb_analyze_string_charset(tvb, offset, descr_len, &encoding);
- dvb_add_chartbl(tree, hf_mpeg_descr_service_provider_name_encoding, tvb, offset, enc_len, encoding);
+ if (prov_len>0) {
+ enc_len = dvb_analyze_string_charset(tvb, offset, prov_len, &encoding);
+ dvb_add_chartbl(tree, hf_mpeg_descr_service_provider_name_encoding, tvb, offset, enc_len, encoding);
- proto_tree_add_item(tree, hf_mpeg_descr_service_provider,
- tvb, offset+enc_len, descr_len-enc_len, dvb_enc_to_item_enc(encoding));
- offset += descr_len;
+ proto_tree_add_item(tree, hf_mpeg_descr_service_provider,
+ tvb, offset+enc_len, prov_len-enc_len, dvb_enc_to_item_enc(encoding));
+ }
+ offset += prov_len;
name_len = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_mpeg_descr_service_name_length, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- enc_len = dvb_analyze_string_charset(tvb, offset, name_len, &encoding);
- dvb_add_chartbl(tree, hf_mpeg_descr_service_name_encoding, tvb, offset, enc_len, encoding);
+ if (name_len>0) {
+ enc_len = dvb_analyze_string_charset(tvb, offset, name_len, &encoding);
+ dvb_add_chartbl(tree, hf_mpeg_descr_service_name_encoding, tvb, offset, enc_len, encoding);
- proto_tree_add_item(tree, hf_mpeg_descr_service_name,
- tvb, offset+enc_len, name_len-enc_len, dvb_enc_to_item_enc(encoding));
+ proto_tree_add_item(tree, hf_mpeg_descr_service_name,
+ tvb, offset+enc_len, name_len-enc_len, dvb_enc_to_item_enc(encoding));
+ }
}