diff options
author | Martin Kaiser <wireshark@kaiser.cx> | 2014-02-26 13:21:09 +0300 |
---|---|---|
committer | Martin Kaiser <wireshark@kaiser.cx> | 2014-03-03 15:24:11 +0000 |
commit | e6d241597e623cc15ff98c4533f5cdd543094641 (patch) | |
tree | 0746cc82058e66c0e32bec36619c5e635bbc6b11 /epan/dissectors | |
parent | 0156add5e90c3c0e17e0612e884b1ccb2c35fe05 (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>
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-mpeg-descriptor.c | 26 |
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)); + } } |