[wireshark] Few bugfixes and enhancements
Peter Lemenkov
peter at fedoraproject.org
Wed Nov 27 12:25:01 UTC 2013
commit 65d033ba7781e42dc3bf3aade9a57b60043b30a1
Author: Peter Lemenkov <lemenkov at gmail.com>
Date: Wed Nov 27 16:24:19 2013 +0400
Few bugfixes and enhancements
- Updated RTPproxy dissector (again)
- Allow packets more than 64k (for USB capture). See patch no. 13
- Don't die during loading of some SIP capture files. See patch no. 14
- Backport support for RTPproxy dissector timeouts detection. See patch no. 15
Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
wireshark-0001-enable-Lua-support.patch | 1 -
...rk-0002-Customize-permission-denied-error.patch | 1 -
...Load-correct-shared-object-name-in-python.patch | 1 -
wireshark-0004-fix-documentation-build-error.patch | 1 -
...05-fix-string-overrun-in-plugins-profinet.patch | 1 -
...Lemenkov-via-https-bugs.wireshark.org-bug.patch | 491 +++++++++++++++++++-
...07-The-beginning-of-an-openflow-dissector.patch | 1 -
wireshark-0008-adds-autoconf-macro-file.patch | 1 -
...shark-0009-Restore-Fedora-specific-groups.patch | 1 -
wireshark-0010-Add-pkgconfig-entry.patch | 1 -
wireshark-0011-Install-autoconf-related-file.patch | 1 -
...ve-default-temporary-directory-to-var-tmp.patch | 1 -
wireshark-0013-Copy-over-r49999-from-trunk.patch | 60 +++
...itial-version-of-RT-C-P-dissector-hinting.patch | 129 -----
...ugs.wireshark.org-bugzilla-show_bug.cgi-i.patch | 22 +
...shark-0015-Add-expert-info-about-timeouts.patch | 84 ++++
wireshark.spec | 20 +-
17 files changed, 648 insertions(+), 169 deletions(-)
---
diff --git a/wireshark-0001-enable-Lua-support.patch b/wireshark-0001-enable-Lua-support.patch
index 551ff10..1daa4ba 100644
--- a/wireshark-0001-enable-Lua-support.patch
+++ b/wireshark-0001-enable-Lua-support.patch
@@ -1,4 +1,3 @@
-From 9d38601b45c6bce770946ac3c36a675a2f1a4359 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal at fedoraproject.org>
Date: Tue, 15 Dec 2009 08:36:27 +0000
Subject: [PATCH] enable Lua support
diff --git a/wireshark-0002-Customize-permission-denied-error.patch b/wireshark-0002-Customize-permission-denied-error.patch
index b3307ff..8d706a5 100644
--- a/wireshark-0002-Customize-permission-denied-error.patch
+++ b/wireshark-0002-Customize-permission-denied-error.patch
@@ -1,4 +1,3 @@
-From d7b9380cb2b827fb627f82a1c3b73496b089b8dd Mon Sep 17 00:00:00 2001
From: Jan Safranek <jsafrane at redhat.com>
Date: Fri, 26 Nov 2010 14:30:45 +0300
Subject: [PATCH] Customize 'permission denied' error.
diff --git a/wireshark-0003-Load-correct-shared-object-name-in-python.patch b/wireshark-0003-Load-correct-shared-object-name-in-python.patch
index 11d7c26..b028ed8 100644
--- a/wireshark-0003-Load-correct-shared-object-name-in-python.patch
+++ b/wireshark-0003-Load-correct-shared-object-name-in-python.patch
@@ -1,4 +1,3 @@
-From 0d0f937fcbb73fb36a44bd7061817ff1cdac0032 Mon Sep 17 00:00:00 2001
From: Jan Safranek <jsafrane at redhat.com>
Date: Thu, 9 Jun 2011 14:56:59 +0200
Subject: [PATCH] Load correct shared object name in python.
diff --git a/wireshark-0004-fix-documentation-build-error.patch b/wireshark-0004-fix-documentation-build-error.patch
index d67f5ce..365633c 100644
--- a/wireshark-0004-fix-documentation-build-error.patch
+++ b/wireshark-0004-fix-documentation-build-error.patch
@@ -1,4 +1,3 @@
-From 8e34a9a261f26ceabc39ea373d9025a24805b832 Mon Sep 17 00:00:00 2001
From: Peter Hatina <phatina at redhat.com>
Date: Mon, 8 Apr 2013 13:03:24 +0200
Subject: [PATCH] fix documentation build error
diff --git a/wireshark-0005-fix-string-overrun-in-plugins-profinet.patch b/wireshark-0005-fix-string-overrun-in-plugins-profinet.patch
index 1ab72e5..bb4268d 100644
--- a/wireshark-0005-fix-string-overrun-in-plugins-profinet.patch
+++ b/wireshark-0005-fix-string-overrun-in-plugins-profinet.patch
@@ -1,4 +1,3 @@
-From dfd843cda67cfd9b785b44f5096a185c04c08be8 Mon Sep 17 00:00:00 2001
From: Peter Hatina <phatina at redhat.com>
Date: Wed, 4 Sep 2013 10:03:57 +0200
Subject: [PATCH] fix string overrun in plugins/profinet
diff --git a/wireshark-0006-From-Peter-Lemenkov-via-https-bugs.wireshark.org-bug.patch b/wireshark-0006-From-Peter-Lemenkov-via-https-bugs.wireshark.org-bug.patch
index 408fcaa..6d61ce0 100644
--- a/wireshark-0006-From-Peter-Lemenkov-via-https-bugs.wireshark.org-bug.patch
+++ b/wireshark-0006-From-Peter-Lemenkov-via-https-bugs.wireshark.org-bug.patch
@@ -1,4 +1,3 @@
-From 1b67a9195503e6f22429a46e98def1dd31a05451 Mon Sep 17 00:00:00 2001
From: Evan Huus <eapache at gmail.com>
Date: Sun, 18 Aug 2013 19:49:08 +0000
Subject: [PATCH] From Peter Lemenkov via
@@ -79,6 +78,57 @@ replace proto_tree_add_string_format_value() with proto_tree_add_item()
svn path=/trunk/; revision=53261
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9429 :
+Fix Notify info parsing in RTPproxy dissector
+
+svn path=/trunk/; revision=53385
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9430 :
+Fix empty ToTag in RTPproxy's Offer/Update command
+
+svn path=/trunk/; revision=53391
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9440 :
+RTPproxy: use proto_item_append_text instead of rewriting the entire item's text
+
+svn path=/trunk/; revision=53393
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9441 :
+Fix Notify IPv6 address parsing in RTPproxy dissector
+
+svn path=/trunk/; revision=53394
+
+add a cast to fix compiler warning
+
+svn path=/trunk/; revision=53401
+
+Fix typo errors
+
+svn path=/trunk/; revision=53585
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9397 :
+Add RTP/RTCP dissector setup based on the replies found in rtpproxy dissector
+
+svn path=/trunk/; revision=53603
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9444 :
+Add initial parameter parser for commands in RTPproxy dissector
+
+svn path=/trunk/; revision=53604
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9476 :
+Add DTMF dissector setup based on the information found in RTPproxy requests
+
+svn path=/trunk/; revision=53605
+
+Squelch a compiler warning.
+
+svn path=/trunk/; revision=53606
+
+Reinitialize counter between loops to avoid an out of bound access found with fuzz testing.
+
+svn path=/trunk/; revision=53612
+
diff --git a/AUTHORS b/AUTHORS
index 10782b0..e7b3c18 100644
--- a/AUTHORS
@@ -117,10 +167,10 @@ index 937f522..73217d7 100644
packet-rudp.c \
diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c
new file mode 100644
-index 0000000..f606abb
+index 0000000..831448b
--- /dev/null
+++ b/epan/dissectors/packet-rtpproxy.c
-@@ -0,0 +1,959 @@
+@@ -0,0 +1,1350 @@
+/* packet-rtpproxy.c
+ * RTPproxy command protocol dissector
+ * Copyright 2013, Peter Lemenkov <lemenkov at gmail.com>
@@ -154,11 +204,27 @@ index 0000000..f606abb
+#include "config.h"
+
+#include <ctype.h>
++#include <glib.h>
+
++#include <epan/address.h>
+#include <epan/packet.h>
+#include <epan/prefs.h>
+#include <epan/conversation.h>
+
++#ifdef HAVE_ARPA_INET_H
++#include <arpa/inet.h>
++#endif
++#ifdef HAVE_WINSOCK2_H
++#include <winsock2.h> /* needed to define AF_ values on Windows */
++#endif
++#ifdef NEED_INET_V6DEFS_H
++#include "wsutil/inet_v6defs.h"
++#endif
++
++/* For setting up RTP/RTCP dissectors based on the RTPproxy's answers */
++#include "packet-rtp.h"
++#include "packet-rtcp.h"
++
+static int proto_rtpproxy = -1;
+
+static int hf_rtpproxy_cookie = -1;
@@ -172,12 +238,23 @@ index 0000000..f606abb
+static int hf_rtpproxy_request = -1;
+static int hf_rtpproxy_command = -1;
+static int hf_rtpproxy_command_parameters = -1;
++static int hf_rtpproxy_command_parameter = -1;
++static int hf_rtpproxy_command_parameter_codec = -1;
++static int hf_rtpproxy_command_parameter_local = -1;
++static int hf_rtpproxy_command_parameter_remote = -1;
++static int hf_rtpproxy_command_parameter_repacketize = -1;
++static int hf_rtpproxy_command_parameter_dtmf = -1;
++/* static int hf_rtpproxy_command_parameter_cmap = -1; TODO */
++static int hf_rtpproxy_command_parameter_proto = -1;
++static int hf_rtpproxy_command_parameter_transcode = -1;
++static int hf_rtpproxy_command_parameter_acc = -1;
+static int hf_rtpproxy_callid = -1;
+static int hf_rtpproxy_copy_target = -1;
+static int hf_rtpproxy_playback_filename = -1;
+static int hf_rtpproxy_playback_codec = -1;
+static int hf_rtpproxy_notify = -1;
+static int hf_rtpproxy_notify_ipv4 = -1;
++static int hf_rtpproxy_notify_ipv6 = -1;
+static int hf_rtpproxy_notify_port = -1;
+static int hf_rtpproxy_notify_tag = -1;
+static int hf_rtpproxy_tag = -1;
@@ -197,6 +274,10 @@ index 0000000..f606abb
+ nstime_t req_time;
+} rtpproxy_info_t;
+
++static dissector_handle_t rtcp_handle;
++static dissector_handle_t rtp_events_handle;
++static dissector_handle_t rtp_handle;
++
+typedef struct _rtpproxy_conv_info {
+ emem_tree_t *trans;
+} rtpproxy_conv_info_t;
@@ -241,6 +322,57 @@ index 0000000..f606abb
+ { 0, NULL }
+};
+
++static const value_string paramtypenames[] = {
++ /* Official command parameters */
++ {'4', "Remote address is IPv4"},
++ {'6', "Remote address is IPv6"},
++ {'a', "Asymmetric RTP"},
++ {'A', "Asymmetric RTP"},
++ {'b', "Brief stats"},
++ {'B', "Brief stats"},
++ {'c', "Codecs"},
++ {'C', "Codecs"},
++ {'e', "External network (non RFC 1918)"},
++ {'E', "External network (non RFC 1918)"},
++ {'i', "Internal network (RFC 1918)"},
++ {'I', "Internal network (RFC 1918)"},
++ {'l', "Local address"},
++ {'L', "Local address"},
++ {'r', "Remote address"},
++ {'R', "Remote address"},
++ {'s', "Symmetric RTP (default)"},
++ {'S', "Symmetric RTP (default)"},
++ {'w', "Weak connection (allows roaming)"},
++ {'W', "Weak connection (allows roaming)"},
++ {'z', "repacketiZe"},
++ {'Z', "repacketiZe"},
++ /* Unofficial command parameters / expensions */
++ {'d', "DTMF payload ID (unofficial extension)"},
++ {'D', "DTMF payload ID (unofficial extension)"},
++ {'m', "codec Mapping (unofficial extension)"},
++ {'M', "codec Mapping (unofficial extension)"},
++ {'p', "Protocol type (unofficial extension)"},
++ {'P', "Protocol type (unofficial extension)"},
++ {'t', "Transcode to (unofficial extension)"},
++ {'T', "Transcode to (unofficial extension)"},
++ {'v', "Accounting (unofficial extension)"},
++ {'V', "Accounting (unofficial extension)"},
++ {0, NULL}
++};
++
++static const value_string prototypenames[] = {
++ { '0', "UDP (default)"},
++ { '1', "TCP"},
++ { '2', "SCTP"},
++ { 0, NULL }
++};
++static const value_string acctypenames[] = {
++ { '0', "Start"},
++ { '1', "Interim update"},
++ { '2', "Stop"},
++ { 0, NULL }
++};
++
+static const value_string oktypenames[] = {
+ { '0', "Ok"},
+ { '1', "Version Supported"},
@@ -274,6 +406,16 @@ index 0000000..f606abb
+
+static gint ett_rtpproxy_request = -1;
+static gint ett_rtpproxy_command = -1;
++static gint ett_rtpproxy_command_parameters = -1;
++static gint ett_rtpproxy_command_parameters_codecs = -1;
++static gint ett_rtpproxy_command_parameters_local = -1;
++static gint ett_rtpproxy_command_parameters_remote = -1;
++static gint ett_rtpproxy_command_parameters_repacketize = -1;
++static gint ett_rtpproxy_command_parameters_dtmf = -1;
++static gint ett_rtpproxy_command_parameters_cmap = -1;
++static gint ett_rtpproxy_command_parameters_proto = -1;
++static gint ett_rtpproxy_command_parameters_transcode = -1;
++static gint ett_rtpproxy_command_parameters_acc = -1;
+static gint ett_rtpproxy_tag = -1;
+static gint ett_rtpproxy_notify = -1;
+
@@ -281,11 +423,12 @@ index 0000000..f606abb
+
+static guint rtpproxy_tcp_port = 22222;
+static guint rtpproxy_udp_port = 22222;
++static gboolean rtpproxy_establish_conversation = TRUE;
+
+void proto_reg_handoff_rtpproxy(void);
+
+gint
-+rtpptoxy_add_tag(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint realsize)
++rtpproxy_add_tag(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint realsize)
+{
+ proto_item *ti = NULL;
+ proto_tree *another_tree = NULL;
@@ -306,10 +449,12 @@ index 0000000..f606abb
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_tag, tvb, begin, end - begin, ENC_ASCII | ENC_NA);
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_tag);
+ ti = proto_tree_add_item(another_tree, hf_rtpproxy_mediaid, tvb, new_offset+1, 0, ENC_ASCII | ENC_NA);
-+ proto_item_set_text(ti, "Media-ID: <skipped>");
++ proto_item_append_text(ti, "<skipped>");
+ }
+ else{
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_tag, tvb, begin, new_offset - begin, ENC_ASCII | ENC_NA);
++ if ((guint)new_offset == begin)
++ proto_item_append_text(ti, "<skipped>"); /* A very first Offer/Update command */
+ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_tag);
+ proto_tree_add_item(another_tree, hf_rtpproxy_mediaid, tvb, new_offset+1, end - (new_offset+1), ENC_ASCII | ENC_NA);
+ }
@@ -317,6 +462,101 @@ index 0000000..f606abb
+}
+
+void
++rtpproxy_add_parameter(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint realsize)
++{
++ proto_item *ti;
++ proto_tree *another_tree = NULL;
++ guint offset = 0;
++ guint new_offset = 0;
++ gint i;
++ guint pt = 0;
++ gchar** codecs = NULL;
++ guint codec_len;
++ guint8* rawstr = NULL;
++
++ /* Extract the entire parameters line. */
++ /* Something like "t4p1iic8,0,2,4,18,96,97,98,100,101" */
++ rawstr = tvb_get_ephemeral_string(tvb, begin, realsize);
++
++ while(offset < realsize){
++ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_command_parameter, tvb, begin + offset, 1, ENC_NA);
++ offset++; /* Skip 1-byte parameter's type */
++ switch (g_ascii_tolower(tvb_get_guint8(tvb, begin+offset-1)))
++ {
++ /* Official long parameters */
++ case 'c':
++ new_offset = (gint)strspn(rawstr+offset, "0123456789,");
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_codecs);
++ codecs = g_strsplit(tvb_get_ephemeral_string(tvb, begin+offset, new_offset), ",", 0);
++ i = 0;
++ while(codecs[i]){
++ /* We assume strings < 2^32-1 bytes long. :-) */
++ codec_len = (guint)strlen(codecs[i]);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_codec, tvb, begin+offset, codec_len, ENC_ASCII | ENC_NA);
++ offset += codec_len;
++ if(codecs[i+1])
++ offset++; /* skip comma */
++ i++;
++ };
++ g_strfreev(codecs);
++ break;
++ case 'l':
++ new_offset = (gint)strspn(rawstr+offset, "0123456789.");
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_local);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_local, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
++ offset += new_offset;
++ break;
++ case 'r':
++ new_offset = (gint)strspn(rawstr+offset, "0123456789.");
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_remote);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_remote, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
++ offset += new_offset;
++ break;
++ case 'z':
++ new_offset = (gint)strspn(rawstr+offset, "0123456789");
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_repacketize);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_repacketize, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
++ offset += new_offset;
++ break;
++ /* Unofficial long parameters */
++ case 'd':
++ new_offset = (gint)strspn(rawstr+offset, "0123456789");
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_dtmf);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_dtmf, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
++ if(rtpproxy_establish_conversation){
++ pt = (guint)strtoul(tvb_format_text(tvb,begin+offset,new_offset),NULL,10);
++ dissector_add_uint("rtp.pt", pt, rtp_events_handle);
++ }
++ offset += new_offset;
++ break;
++ case 'm':
++ new_offset = (gint)strspn(rawstr+offset, "0123456789=,");
++ /* TODO */
++ offset += new_offset;
++ break;
++ case 'p':
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_proto);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_proto, tvb, begin+offset, 1, ENC_NA);
++ offset++;
++ break;
++ case 't':
++ new_offset = (gint)strspn(rawstr+offset, "0123456789");
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_transcode);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_transcode, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
++ offset += new_offset;
++ break;
++ case 'v':
++ another_tree = proto_item_add_subtree(ti, ett_rtpproxy_command_parameters_acc);
++ proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_acc, tvb, begin+offset, 1, ENC_NA);
++ offset++;
++ break;
++ default:
++ break;
++ }
++ }
++}
++
++void
+rtpproxy_add_tid(gboolean is_request, tvbuff_t *tvb, packet_info *pinfo, proto_tree *rtpproxy_tree, rtpproxy_conv_info_t *rtpproxy_conv, gchar* cookie)
+{
+ rtpproxy_info_t *rtpproxy_info;
@@ -353,6 +593,37 @@ index 0000000..f606abb
+ }
+}
+
++void
++rtpproxy_add_notify_addr(proto_tree *rtpproxy_tree, tvbuff_t *tvb, guint begin, guint end)
++{
++ gint offset = 0;
++ gint tmp = 0;
++ gboolean ipv6 = FALSE;
++ proto_item *ti;
++
++ /* Check for at least one colon */
++ offset = tvb_find_guint8(tvb, begin, end, ':');
++ if(offset != -1){
++ /* Find if it's the latest colon (not in case of a IPv6) */
++ while((tmp = tvb_find_guint8(tvb, offset+1, end, ':')) != -1){
++ ipv6 = TRUE;
++ offset = tmp;
++ }
++ /* We have ip:port */
++ if(ipv6)
++ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv6, tvb, begin, offset - begin, ENC_ASCII | ENC_NA);
++ else
++ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, begin, offset - begin, ENC_ASCII | ENC_NA);
++ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, offset+1, end - (offset+1), ENC_ASCII | ENC_NA);
++ }
++ else{
++ /* Only port is supplied */
++ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, begin, 0, ENC_ASCII | ENC_NA);
++ proto_item_append_text(ti, "<skipped>");
++ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, begin, end - begin, ENC_ASCII | ENC_NA);
++ }
++}
++
+static int
+dissect_rtpproxy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
@@ -364,10 +635,15 @@ index 0000000..f606abb
+ guint8* rawstr;
+ guint8* tmpstr;
+ proto_item *ti;
++ proto_item *ti2;
+ proto_tree *rtpproxy_tree;
+ conversation_t *conversation;
+ rtpproxy_conv_info_t *rtpproxy_conv;
+ gchar* cookie = NULL;
++ /* For RT(C)P setup */
++ address addr;
++ guint16 port;
++ guint32 ipaddr[4];
+
+ /* If it does not start with a printable character it's not RTPProxy */
+ if(!isprint(tvb_get_guint8(tvb, 0)))
@@ -473,7 +749,8 @@ index 0000000..f606abb
+
+ if (new_offset != offset + 1){
+ rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_command);
-+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_command_parameters, tvb, offset+1, new_offset - (offset+1), ENC_ASCII | ENC_NA);
++ ti2 = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_command_parameters, tvb, offset+1, new_offset - (offset+1), ENC_ASCII | ENC_NA);
++ rtpproxy_add_parameter(proto_item_add_subtree(ti2, ett_rtpproxy_command_parameters), tvb, offset+1, new_offset - (offset+1));
+ rtpproxy_tree = proto_item_get_parent(ti);
+ }
+
@@ -532,14 +809,14 @@ index 0000000..f606abb
+ }
+
+ /* Extract first tag */
-+ new_offset = rtpptoxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
++ new_offset = rtpproxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
+ if(new_offset == -1)
+ break; /* No more parameters */
+ /* Skip whitespace */
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
+
+ /* Extract second tag */
-+ new_offset = rtpptoxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
++ new_offset = rtpproxy_add_tag(rtpproxy_tree, tvb, offset, realsize);
+ if(new_offset == -1)
+ break; /* No more parameters */
+ /* Skip whitespace */
@@ -547,27 +824,20 @@ index 0000000..f606abb
+
+ /* Extract Notification address */
+ if (tmp == 'u'){
-+ new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify, tvb, offset, realsize - offset, ENC_ASCII | ENC_NA);
+ proto_item_set_text(ti, "Notify");
+ rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_notify);
++
++ /* Check for NotifyTag parameter (separated by space) */
++ new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
+ if(new_offset == -1){
-+ /* FIXME only IPv4 is supported */
-+ new_offset = tvb_find_guint8(tvb, offset, -1, ':');
-+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
-+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, new_offset+1, realsize - (new_offset+1), ENC_ASCII | ENC_NA);
++ /* NotifyTag wasn't found (we should re-use Call-ID instead) */
++ rtpproxy_add_notify_addr(rtpproxy_tree, tvb, offset, realsize);
+ break; /* No more parameters */
+ }
-+ if(new_offset - offset < 6){
-+ /* Only port is supplied */
-+ ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, offset, 0, ENC_ASCII | ENC_NA);
-+ proto_item_set_text(ti, "Notification IPv4: <skipped>");
-+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
-+ }
-+ else{
-+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_ipv4, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
-+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_notify_port, tvb, new_offset+1, realsize - (new_offset+1), ENC_ASCII | ENC_NA);
-+ }
++
++ /* NotifyTag was found */
++ rtpproxy_add_notify_addr(rtpproxy_tree, tvb, offset, new_offset);
+ /* Skip whitespace */
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
+
@@ -624,16 +894,38 @@ index 0000000..f606abb
+
+ /* Extract Port */
+ new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
++ /* Convert port to unsigned 16-bit number */
++ port = (guint16) g_ascii_strtoull((gchar*)tvb_get_ephemeral_string(tvb, offset, new_offset - offset), NULL, 10);
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_port, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
+ /* Skip whitespace */
+ offset = tvb_skip_wsp(tvb, new_offset+1, -1);
+
+ /* Extract IP */
+ tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE);
-+ if (tvb_find_guint8(tvb, offset, -1, ':') == -1)
++ if (tvb_find_guint8(tvb, offset, -1, ':') == -1){
++ inet_pton(AF_INET, (char*)tvb_get_ephemeral_string(tvb, offset, tmp), &ipaddr);
++ addr.type = AT_IPv4;
++ addr.len = 4;
++ addr.data = ep_memdup(&ipaddr, 4);
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv4, tvb, offset, tmp, ENC_ASCII | ENC_NA);
-+ else
++ }
++ else{
++ inet_pton(AF_INET6, (char*)tvb_get_ephemeral_string(tvb, offset, tmp), &ipaddr);
++ addr.type = AT_IPv6;
++ addr.len = 16;
++ addr.data = ep_memdup(&ipaddr, 16);
+ proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_ipv6, tvb, offset, tmp, ENC_ASCII | ENC_NA);
++ }
++
++ if(rtpproxy_establish_conversation){
++ if (rtp_handle) {
++ /* FIXME tell if isn't a video stream, and setup codec mapping */
++ rtp_add_address(pinfo, &addr, port, 0, "RTPproxy", pinfo->fd->num, 0, NULL);
++ }
++ if (rtcp_handle) {
++ rtcp_add_address(pinfo, &addr, port+1, 0, "RTPproxy", pinfo->fd->num);
++ }
++ }
+ break;
+ default:
+ break;
@@ -807,6 +1099,123 @@ index 0000000..f606abb
+ }
+ },
+ {
++ &hf_rtpproxy_command_parameter,
++ {
++ "Parameter",
++ "rtpproxy.command_parameter",
++ FT_UINT8,
++ BASE_DEC,
++ VALS(paramtypenames),
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_codec,
++ {
++ "Allowed codec",
++ "rtpproxy.command_parameter_codec",
++ FT_STRING,
++ BASE_NONE,
++ NULL,
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_local,
++ {
++ "Local IP address",
++ "rtpproxy.command_parameter_local",
++ FT_STRING,
++ BASE_NONE,
++ NULL,
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_remote,
++ {
++ "Remote IP address",
++ "rtpproxy.command_parameter_remote",
++ FT_STRING,
++ BASE_NONE,
++ NULL,
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_repacketize,
++ {
++ "Repacketize (ms)",
++ "rtpproxy.command_parameter_repacketize",
++ FT_STRING,
++ BASE_NONE,
++ NULL,
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_dtmf,
++ {
++ "DTMF payload ID",
++ "rtpproxy.command_parameter_dtmf",
++ FT_STRING,
++ BASE_NONE,
++ NULL,
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_proto,
++ {
++ "RTP tramsission protocol",
++ "rtpproxy.command_parameter_proto",
++ FT_UINT8,
++ BASE_DEC,
++ VALS(prototypenames),
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_transcode,
++ {
++ "Transcode to",
++ "rtpproxy.command_parameter_transcode",
++ FT_STRING,
++ BASE_NONE,
++ NULL,
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
++ &hf_rtpproxy_command_parameter_acc,
++ {
++ "Accounting",
++ "rtpproxy.command_parameter_acc",
++ FT_UINT8,
++ BASE_DEC,
++ VALS(acctypenames),
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
+ &hf_rtpproxy_copy_target,
+ {
+ "Copy target",
@@ -911,6 +1320,19 @@ index 0000000..f606abb
+ }
+ },
+ {
++ &hf_rtpproxy_notify_ipv6,
++ {
++ "Notification IPv6",
++ "rtpproxy.notify_ipv6",
++ FT_STRING,
++ BASE_NONE,
++ NULL,
++ 0x0,
++ NULL,
++ HFILL
++ }
++ },
++ {
+ &hf_rtpproxy_notify_port,
+ {
+ "Notification Port",
@@ -1009,6 +1431,16 @@ index 0000000..f606abb
+ &ett_rtpproxy,
+ &ett_rtpproxy_request,
+ &ett_rtpproxy_command,
++ &ett_rtpproxy_command_parameters,
++ &ett_rtpproxy_command_parameters_codecs,
++ &ett_rtpproxy_command_parameters_local,
++ &ett_rtpproxy_command_parameters_remote,
++ &ett_rtpproxy_command_parameters_repacketize,
++ &ett_rtpproxy_command_parameters_dtmf,
++ &ett_rtpproxy_command_parameters_cmap,
++ &ett_rtpproxy_command_parameters_proto,
++ &ett_rtpproxy_command_parameters_transcode,
++ &ett_rtpproxy_command_parameters_acc,
+ &ett_rtpproxy_tag,
+ &ett_rtpproxy_notify,
+ &ett_rtpproxy_reply
@@ -1035,6 +1467,11 @@ index 0000000..f606abb
+ "RTPproxy UDP Port", /* Descr */
+ 10,
+ &rtpproxy_udp_port);
++ prefs_register_bool_preference(rtpproxy_module, "establish_conversation",
++ "Establish Media Conversation",
++ "Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based "
++ "upon port numbers found in RTPproxy answers",
++ &rtpproxy_establish_conversation);
+}
+
+void
@@ -1066,6 +1503,10 @@ index 0000000..f606abb
+ if(rtpproxy_udp_port != 0 && old_rtpproxy_udp_port != rtpproxy_udp_port)
+ dissector_add_uint("udp.port", rtpproxy_udp_port, rtpproxy_udp_handle);
+ old_rtpproxy_udp_port = rtpproxy_udp_port;
++
++ rtcp_handle = find_dissector("rtcp");
++ rtp_events_handle = find_dissector("rtpevent");
++ rtp_handle = find_dissector("rtp");
+}
+
+/*
diff --git a/wireshark-0007-The-beginning-of-an-openflow-dissector.patch b/wireshark-0007-The-beginning-of-an-openflow-dissector.patch
index cda6e01..032499d 100644
--- a/wireshark-0007-The-beginning-of-an-openflow-dissector.patch
+++ b/wireshark-0007-The-beginning-of-an-openflow-dissector.patch
@@ -1,4 +1,3 @@
-From 1904600d69fb059c768170d12d636137f3b19de0 Mon Sep 17 00:00:00 2001
From: Anders Broman <anders.broman at ericsson.com>
Date: Thu, 11 Jul 2013 21:13:27 +0000
Subject: [PATCH] The beginning of an openflow dissector.
diff --git a/wireshark-0008-adds-autoconf-macro-file.patch b/wireshark-0008-adds-autoconf-macro-file.patch
index d064d98..5c1818d 100644
--- a/wireshark-0008-adds-autoconf-macro-file.patch
+++ b/wireshark-0008-adds-autoconf-macro-file.patch
@@ -1,4 +1,3 @@
-From 37c27f6c58004b8682bcc3bb10c2cc13cd81a653 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal at fedoraproject.org>
Date: Mon, 21 Dec 2009 11:19:39 +0000
Subject: [PATCH] adds autoconf macro file
diff --git a/wireshark-0009-Restore-Fedora-specific-groups.patch b/wireshark-0009-Restore-Fedora-specific-groups.patch
index 3c030fe..7d8fca4 100644
--- a/wireshark-0009-Restore-Fedora-specific-groups.patch
+++ b/wireshark-0009-Restore-Fedora-specific-groups.patch
@@ -1,4 +1,3 @@
-From 1022a03e6f71efdff1b91c87b2426a229a24791d Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov at gmail.com>
Date: Fri, 13 Sep 2013 14:36:55 +0400
Subject: [PATCH] Restore Fedora-specific groups
diff --git a/wireshark-0010-Add-pkgconfig-entry.patch b/wireshark-0010-Add-pkgconfig-entry.patch
index 1c81670..cd6f5ac 100644
--- a/wireshark-0010-Add-pkgconfig-entry.patch
+++ b/wireshark-0010-Add-pkgconfig-entry.patch
@@ -1,4 +1,3 @@
-From 5fcb09305500b72fa2cb584c4ef8ab0e3a08c22c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radek=20Vok=C3=A1l?= <rvokal at fedoraproject.org>
Date: Thu, 17 Dec 2009 09:17:07 +0000
Subject: [PATCH] Add pkgconfig entry
diff --git a/wireshark-0011-Install-autoconf-related-file.patch b/wireshark-0011-Install-autoconf-related-file.patch
index da92f94..3b5d737 100644
--- a/wireshark-0011-Install-autoconf-related-file.patch
+++ b/wireshark-0011-Install-autoconf-related-file.patch
@@ -1,4 +1,3 @@
-From 019eea6cacbf7f01290ac6b42c1609c573ba0a33 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov at gmail.com>
Date: Fri, 13 Sep 2013 15:25:12 +0400
Subject: [PATCH] Install autoconf-related file
diff --git a/wireshark-0012-move-default-temporary-directory-to-var-tmp.patch b/wireshark-0012-move-default-temporary-directory-to-var-tmp.patch
index ce64f4a..9b64428 100644
--- a/wireshark-0012-move-default-temporary-directory-to-var-tmp.patch
+++ b/wireshark-0012-move-default-temporary-directory-to-var-tmp.patch
@@ -1,4 +1,3 @@
-From 0ecd119162d513c50e37206846f4238257fde247 Mon Sep 17 00:00:00 2001
From: Peter Hatina <phatina at redhat.com>
Date: Tue, 24 Sep 2013 10:55:09 +0200
Subject: [PATCH] move default temporary directory to /var/tmp
diff --git a/wireshark-0013-Copy-over-r49999-from-trunk.patch b/wireshark-0013-Copy-over-r49999-from-trunk.patch
new file mode 100644
index 0000000..e078a09
--- /dev/null
+++ b/wireshark-0013-Copy-over-r49999-from-trunk.patch
@@ -0,0 +1,60 @@
+From: Guy Harris <guy at alum.mit.edu>
+Date: Thu, 7 Nov 2013 01:54:16 +0000
+Subject: [PATCH] Copy over r49999 from trunk:
+
+ ------------------------------------------------------------------------
+ r49999 | eapache | 2013-06-17 18:02:26 -0700 (Mon, 17 Jun 2013) | 10 lines
+
+ Don't limit the on-the-wire length of packets to 64KB, there are larger packets
+ out there (especially over USB) and we should be able to load them as long as
+ they are snapped to a sane length.
+
+ Also validate that packets do not specify a snapshot length larger than the one
+ in the file header, though only make it a warning, as this is not necessarily a
+ fatally corrupt packet.
+
+ https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8808
+
+ ------------------------------------------------------------------------
+
+Also fixes bug 9390.
+
+svn path=/trunk-1.10/; revision=53123
+
+diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
+index cb9e97c..9601332 100644
+--- a/wiretap/libpcap.c
++++ b/wiretap/libpcap.c
+@@ -773,21 +773,8 @@ static int libpcap_read_header(wtap *wth, int *err, gchar **err_info,
+ return -1;
+ }
+
+- if (hdr->hdr.orig_len > WTAP_MAX_PACKET_SIZE) {
+- /*
+- * Probably a corrupt capture file; return an error,
+- * so that our caller doesn't blow up trying to
+- * cope with a huge "real" packet length, and so that
+- * the code to try to guess what type of libpcap file
+- * this is can tell when it's not the type we're guessing
+- * it is.
+- */
+- *err = WTAP_ERR_BAD_FILE;
+- if (err_info != NULL) {
+- *err_info = g_strdup_printf("pcap: File has %u-byte packet, bigger than maximum of %u",
+- hdr->hdr.orig_len, WTAP_MAX_PACKET_SIZE);
+- }
+- return -1;
++ if (hdr->hdr.incl_len > wth->snapshot_length) {
++ g_warning("pcap: File has packet larger than file's snapshot length.");
+ }
+
+ return bytes_read;
+@@ -955,7 +942,7 @@ static gboolean libpcap_dump(wtap_dumper *wdh,
+ rec_hdr.hdr.incl_len = phdr->caplen + phdrsize;
+ rec_hdr.hdr.orig_len = phdr->len + phdrsize;
+
+- if (rec_hdr.hdr.incl_len > WTAP_MAX_PACKET_SIZE || rec_hdr.hdr.orig_len > WTAP_MAX_PACKET_SIZE) {
++ if (rec_hdr.hdr.incl_len > WTAP_MAX_PACKET_SIZE) {
+ *err = WTAP_ERR_BAD_FILE;
+ return FALSE;
+ }
diff --git a/wireshark-0014-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch b/wireshark-0014-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch
new file mode 100644
index 0000000..3cfb271
--- /dev/null
+++ b/wireshark-0014-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch
@@ -0,0 +1,22 @@
+From: Pascal Quantin <pascal.quantin at gmail.com>
+Date: Sat, 9 Nov 2013 15:44:01 +0000
+Subject: [PATCH] Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9388
+ : Avoid an infinite loop in SIP dissector (backport of r51738)
+
+svn path=/trunk-1.10/; revision=53195
+
+diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c
+index a3ceec2..b012837 100644
+--- a/epan/dissectors/packet-sip.c
++++ b/epan/dissectors/packet-sip.c
+@@ -2134,6 +2134,10 @@ dissect_sip_common(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr
+ */
+ orig_offset = offset;
+ linelen = tvb_find_line_end(tvb, offset, -1, &next_offset, FALSE);
++ if(linelen==0){
++ return -2;
++ }
++
+ if (tvb_strnlen(tvb, offset, linelen) > -1)
+ {
+ /*
diff --git a/wireshark-0015-Add-expert-info-about-timeouts.patch b/wireshark-0015-Add-expert-info-about-timeouts.patch
new file mode 100644
index 0000000..2168a42
--- /dev/null
+++ b/wireshark-0015-Add-expert-info-about-timeouts.patch
@@ -0,0 +1,84 @@
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Mon, 4 Nov 2013 22:46:16 +0400
+Subject: [PATCH] Add expert info about timeouts
+
+Backported patch from this bugzilla ticket:
+
+https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9484
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+
+diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c
+index 831448b..04830bc 100644
+--- a/epan/dissectors/packet-rtpproxy.c
++++ b/epan/dissectors/packet-rtpproxy.c
+@@ -37,6 +37,7 @@
+ #include <epan/packet.h>
+ #include <epan/prefs.h>
+ #include <epan/conversation.h>
++#include <epan/expert.h>
+
+ #ifdef HAVE_ARPA_INET_H
+ #include <arpa/inet.h>
+@@ -248,9 +249,14 @@ static gint ett_rtpproxy_notify = -1;
+
+ static gint ett_rtpproxy_reply = -1;
+
++/* Default values */
+ static guint rtpproxy_tcp_port = 22222;
+ static guint rtpproxy_udp_port = 22222;
+ static gboolean rtpproxy_establish_conversation = TRUE;
++/* See - http://www.opensips.org/html/docs/modules/1.11.x/rtpproxy.html#id250018 */
++/* See - http://www.kamailio.org/docs/modules/devel/modules/rtpproxy.html#idm448 */
++static guint rtpproxy_timeout = 1000;
++static nstime_t rtpproxy_timeout_ns = {1, 0};
+
+ void proto_reg_handoff_rtpproxy(void);
+
+@@ -415,6 +421,8 @@ rtpproxy_add_tid(gboolean is_request, tvbuff_t *tvb, packet_info *pinfo, proto_t
+ nstime_delta(&ns, &pinfo->fd->abs_ts, &rtpproxy_info->req_time);
+ pi = proto_tree_add_time(rtpproxy_tree, hf_rtpproxy_response_time, tvb, 0, 0, &ns);
+ PROTO_ITEM_SET_GENERATED(pi);
++ if (nstime_cmp(&rtpproxy_timeout_ns, &ns) < 0)
++ expert_add_info_format(pinfo, rtpproxy_tree, PI_RESPONSE_CODE, PI_WARN, "Response timeout %'.3f seconds", nstime_to_sec(&ns));
+ }
+ }
+ }
+@@ -1283,6 +1291,7 @@ proto_register_rtpproxy(void)
+ proto_register_subtree_array(ett, array_length(ett));
+
+ rtpproxy_module = prefs_register_protocol(proto_rtpproxy, proto_reg_handoff_rtpproxy);
++
+ prefs_register_uint_preference(rtpproxy_module, "tcp.port",
+ "RTPproxy TCP Port", /* Title */
+ "RTPproxy TCP Port", /* Descr */
+@@ -1294,11 +1303,18 @@ proto_register_rtpproxy(void)
+ "RTPproxy UDP Port", /* Descr */
+ 10,
+ &rtpproxy_udp_port);
++
+ prefs_register_bool_preference(rtpproxy_module, "establish_conversation",
+ "Establish Media Conversation",
+ "Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based "
+ "upon port numbers found in RTPproxy answers",
+ &rtpproxy_establish_conversation);
++
++ prefs_register_uint_preference(rtpproxy_module, "reply.timeout",
++ "RTPproxy reply timeout", /* Title */
++ "Maximum timeout value in waiting for reply from RTPProxy (in milliseconds).", /* Descr */
++ 10,
++ &rtpproxy_timeout);
+ }
+
+ void
+@@ -1334,6 +1350,10 @@ proto_reg_handoff_rtpproxy(void)
+ rtcp_handle = find_dissector("rtcp");
+ rtp_events_handle = find_dissector("rtpevent");
+ rtp_handle = find_dissector("rtp");
++
++ /* Calculate nstime_t struct for the timeout from the rtpproxy_timeout value in milliseconds */
++ rtpproxy_timeout_ns.secs = (rtpproxy_timeout - rtpproxy_timeout % 1000) / 1000;
++ rtpproxy_timeout_ns.nsecs = (rtpproxy_timeout % 1000) * 1000;
+ }
+
+ /*
diff --git a/wireshark.spec b/wireshark.spec
index 95f98ff..fc1172b 100644
--- a/wireshark.spec
+++ b/wireshark.spec
@@ -21,7 +21,7 @@
Summary: Network traffic analyzer
Name: wireshark
Version: 1.10.3
-Release: 4%{?dist}
+Release: 5%{?dist}
License: GPL+
Group: Applications/Internet
Source0: http://wireshark.org/download/src/%{name}-%{version}.tar.bz2
@@ -47,9 +47,13 @@ Patch10: wireshark-0010-Add-pkgconfig-entry.patch
Patch11: wireshark-0011-Install-autoconf-related-file.patch
# Fedora-specific
Patch12: wireshark-0012-move-default-temporary-directory-to-var-tmp.patch
+# Backported from upstream.
+Patch13: wireshark-0013-Copy-over-r49999-from-trunk.patch
+# Backported from upstream.
+Patch14: wireshark-0014-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch
# Backported to 1.10.x from the patch from this ticket:
-# https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9397
-Patch13: wireshark-0013-Initial-version-of-RT-C-P-dissector-hinting.patch
+# https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9484
+Patch15: wireshark-0015-Add-expert-info-about-timeouts.patch
Url: http://www.wireshark.org/
BuildRequires: libpcap-devel >= 0.9
@@ -156,7 +160,9 @@ and plugins.
%patch10 -p1 -b .add_pkgconfig
%patch11 -p1 -b .install_autoconf
%patch12 -p1 -b .tmp_dir
-%patch13 -p1 -b .rtpproxy_hinting
+%patch13 -p1 -b .allow_64kpackets_for_usb
+%patch14 -p1 -b .dont_die_during_sip_dissection
+%patch15 -p1 -b .add_expert_info_about_rtpproxy
%build
%ifarch s390 s390x sparcv9 sparc64
@@ -351,6 +357,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_datadir}/aclocal/*
%changelog
+* Wed Nov 27 2013 Peter Lemenkov <lemenkov at gmail.com> - 1.10.3-5
+- Updated RTPproxy dissector (again)
+- Allow packets more than 64k (for USB capture). See patch no. 13
+- Don't die during loading of some SIP capture files. See patch no. 14
+- Backport support for RTPproxy dissector timeouts detection. See patch no. 15
+
* Wed Nov 13 2013 Peter Lemenkov <lemenkov at gmail.com> - 1.10.3-4
- Updated RTPproxy dissector
More information about the scm-commits
mailing list