aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-01-29 13:55:00 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2015-01-29 20:25:09 +0000
commit2edf8bbd33e4820c19a52a435ddb2cc8e3e32fdb (patch)
tree69df6b78b4d58e66f0b650540e37c92899757205
parent0ba51cc0b248e1b72f6eb4ded5128c4ac88d6a28 (diff)
SDP: check that media format starts with a digit before trying to identify media type
Bug: 10899 Change-Id: I92319a668ae795247d4021f32d629f5000ceb395 Reviewed-on: https://code.wireshark.org/review/6841 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Reviewed-by: Anders Broman <a.broman58@gmail.com> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r--epan/dissectors/packet-sdp.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c
index e62db324bc..73697ae6a5 100644
--- a/epan/dissectors/packet-sdp.c
+++ b/epan/dissectors/packet-sdp.c
@@ -958,15 +958,20 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
if (!strcmp(media_info->media_proto[media_info->media_count], "RTP/AVP")) {
media_format = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, tokenlen, ENC_UTF_8|ENC_NA);
- proto_tree_add_string(sdp_media_tree, hf_media_format, tvb, offset,
- tokenlen, val_to_str_ext((guint32)strtoul((char*)media_format, NULL, 10), &rtp_payload_type_vals_ext, "%u"));
- idx = transport_info->media[transport_info->media_count].pt_count;
- transport_info->media[transport_info->media_count].pt[idx] = (gint32)strtol((char*)media_format, NULL, 10);
- DPRINT(("parsed media codec pt=%d, for media_count=%d",
- transport_info->media[transport_info->media_count].pt[idx],
- transport_info->media_count));
- if (idx < (SDP_MAX_RTP_PAYLOAD_TYPES-1))
- transport_info->media[transport_info->media_count].pt_count++;
+ if (g_ascii_isdigit(media_format[0])) {
+ proto_tree_add_string(sdp_media_tree, hf_media_format, tvb, offset,
+ tokenlen, val_to_str_ext((guint32)strtoul((char*)media_format, NULL, 10), &rtp_payload_type_vals_ext, "%u"));
+ idx = transport_info->media[transport_info->media_count].pt_count;
+ transport_info->media[transport_info->media_count].pt[idx] = (gint32)strtol((char*)media_format, NULL, 10);
+ DPRINT(("parsed media codec pt=%d, for media_count=%d",
+ transport_info->media[transport_info->media_count].pt[idx],
+ transport_info->media_count));
+ if (idx < (SDP_MAX_RTP_PAYLOAD_TYPES-1))
+ transport_info->media[transport_info->media_count].pt_count++;
+ } else {
+ proto_tree_add_item(sdp_media_tree, hf_media_format, tvb, offset,
+ tokenlen, ENC_UTF_8|ENC_NA);
+ }
} else {
proto_tree_add_item(sdp_media_tree, hf_media_format, tvb, offset,
tokenlen, ENC_UTF_8|ENC_NA);