aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dvbci.c
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2014-03-21 15:25:34 +0100
committerMartin Kaiser <wireshark@kaiser.cx>2014-03-21 18:48:14 +0000
commit95f5938e95387d637eb8e8c917a6b7e4bc8e7c8f (patch)
tree09998dea9195a0c0092dcfa56d33b07049fdffc9 /epan/dissectors/packet-dvbci.c
parentd1873dbcc89eb3138027d8e5c5e4c5b12420e797 (diff)
fix clear/scrambled detection
Change-Id: Id82763dd17e8c4e0902ae8e31ec6554e8f174b59 Reviewed-on: https://code.wireshark.org/review/769 Reviewed-by: Martin Kaiser <wireshark@kaiser.cx> Tested-by: Martin Kaiser <wireshark@kaiser.cx>
Diffstat (limited to 'epan/dissectors/packet-dvbci.c')
-rw-r--r--epan/dissectors/packet-dvbci.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/epan/dissectors/packet-dvbci.c b/epan/dissectors/packet-dvbci.c
index 9c1a427ac4..60fc2d3ce1 100644
--- a/epan/dissectors/packet-dvbci.c
+++ b/epan/dissectors/packet-dvbci.c
@@ -2539,6 +2539,12 @@ dissect_es(tvbuff_t *tvb, gint offset,
offset_start = offset;
+ if (scrambled) {
+ /* default to free service until we found a ca descriptor
+ (we could have es info len > 0 and no ca descriptors) */
+ *scrambled = FALSE;
+ }
+
ti = proto_tree_add_text(tree, tvb, offset_start, -1, "Elementary Stream");
es_tree = proto_item_add_subtree(ti, ett_dvbci_application);
@@ -2564,14 +2570,14 @@ dissect_es(tvbuff_t *tvb, gint offset,
if (ca_desc_len <= 0)
return -1;
offset += ca_desc_len;
+ if (scrambled)
+ *scrambled = TRUE;
}
- *scrambled = TRUE;
}
else {
proto_tree_add_text(
es_tree, tvb, 0, 0,
"No CA descriptors for this elementary stream");
- *scrambled = FALSE;
}
proto_item_set_len(ti, offset-offset_start);
@@ -2754,7 +2760,7 @@ dissect_dvbci_payload_ca(guint32 tag, gint len_field,
gint es_info_len, all_len;
gint ca_desc_len;
gboolean scrambled = FALSE;
- gboolean es_scrambled;
+ gboolean es_scrambled = FALSE;
proto_tree *es_tree = NULL;
gboolean desc_ok = FALSE;
@@ -2805,8 +2811,9 @@ dissect_dvbci_payload_ca(guint32 tag, gint len_field,
if (ca_desc_len <= 0)
return;
offset += ca_desc_len;
+ /* set this only if we've seen at least one valid ca descriptor */
+ scrambled = TRUE;
}
- scrambled = TRUE;
}
else {
proto_tree_add_text(