aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2010-03-04 17:49:51 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2010-03-04 17:49:51 +0000
commitd5fb0763977c3fa6b46255632c8c986fc357c6ab (patch)
tree254a14196bfc9ac3e510146527923da20924948f
parent437d42a943f9ddfead6245b308db47e2c703ece7 (diff)
downloadwireshark-d5fb0763977c3fa6b46255632c8c986fc357c6ab.tar.gz
wireshark-d5fb0763977c3fa6b46255632c8c986fc357c6ab.tar.bz2
wireshark-d5fb0763977c3fa6b46255632c8c986fc357c6ab.zip
Check that we haven't gone over MAX_NACKs!
svn path=/trunk/; revision=32115
-rw-r--r--epan/dissectors/packet-rlc-lte.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/epan/dissectors/packet-rlc-lte.c b/epan/dissectors/packet-rlc-lte.c
index 1284e68628..def894bc4f 100644
--- a/epan/dissectors/packet-rlc-lte.c
+++ b/epan/dissectors/packet-rlc-lte.c
@@ -566,6 +566,7 @@ static void addChannelSequenceInfo(state_sequence_analysis_report_in_frame *p,
/********************************************/
/* AM */
/********************************************/
+
switch (p->amState) {
case SN_OK:
ti = proto_tree_add_boolean(seqnum_tree, hf_rlc_lte_sequence_analysis_ok,
@@ -625,18 +626,20 @@ static void addChannelSequenceInfo(state_sequence_analysis_report_in_frame *p,
PROTO_ITEM_SET_GENERATED(ti);
if (p->lastSN != p->firstSN) {
expert_add_info_format(pinfo, ti, PI_SEQUENCE, PI_WARN,
- "AM SNs missing for %s on UE %u (%u to %u)",
+ "AM SNs (%u to %u) missing for %s on UE %u",
+ p->firstSN, p->lastSN,
val_to_str(p_rlc_lte_info->direction, direction_vals, "Unknown"),
- p_rlc_lte_info->ueid, p->firstSN, p->lastSN);
+ p_rlc_lte_info->ueid);
proto_item_append_text(seqnum_ti, " - SNs missing (%u to %u)",
p->firstSN, p->lastSN);
tap_info->missingSNs = ((p->lastSN - p->firstSN) % 1024) + 1;
}
else {
expert_add_info_format(pinfo, ti, PI_SEQUENCE, PI_WARN,
- "AM SN missing for %s on UE %u (%u)",
+ "AM SN (%u) missing for %s on UE %u",
+ p->firstSN,
val_to_str(p_rlc_lte_info->direction, direction_vals, "Unknown"),
- p_rlc_lte_info->ueid, p->firstSN);
+ p_rlc_lte_info->ueid);
proto_item_append_text(seqnum_ti, " - SN missing (%u)",
p->firstSN);
tap_info->missingSNs = 1;
@@ -1326,7 +1329,10 @@ static void dissect_rlc_lte_am_status_pdu(tvbuff_t *tvb,
bit_offset += 10;
col_append_fstr(pinfo->cinfo, COL_INFO, " NACK_SN=%u", (guint16)nack_sn);
proto_item_append_text(top_ti, " NACK_SN=%u", (guint16)nack_sn);
- tap_info->NACKs[nack_count++] = (guint16)nack_sn;
+ /* Copy into struct, but don't exceed buffer */
+ if (nack_count < MAX_NACKs) {
+ tap_info->NACKs[nack_count++] = (guint16)nack_sn;
+ }
/* E1 */
proto_tree_add_bits_ret_val(tree, hf_rlc_lte_am_e1, tvb,