[wireshark] Few bugfixes and enhancements

Peter Lemenkov peter at fedoraproject.org
Sun Dec 8 09:27:37 UTC 2013


commit 61af307f0c859023b27d5c68b3efc1eaa7e44c4c
Author: Peter Lemenkov <lemenkov at gmail.com>
Date:   Sun Dec 8 13:25:19 2013 +0400

    Few bugfixes and enhancements
    
    Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>

 ...Load-correct-shared-object-name-in-python.patch |    4 +-
 ...Lemenkov-via-https-bugs.wireshark.org-bug.patch |   80 +++++-
 ...shark-0015-Add-expert-info-about-timeouts.patch |   84 ------
 ...Jagdmann-Make-sure-err_str-is-initialized.patch |   19 ++
 ...selecting-Decode-As-based-on-SCTP-PPID.-B.patch |   32 +++
 ...ugs.wireshark.org-bugzilla-show_bug.cgi-i.patch |  295 ++++++++++++++++++++
 wireshark.spec                                     |   31 ++-
 7 files changed, 444 insertions(+), 101 deletions(-)
---
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 b028ed8..0d05e05 100644
--- a/wireshark-0003-Load-correct-shared-object-name-in-python.patch
+++ b/wireshark-0003-Load-correct-shared-object-name-in-python.patch
@@ -7,7 +7,7 @@ was not installed:
    libwireshark.so: cannot open shared object file: No such file or directory
 
 diff --git a/epan/wspython/wspy_libws.py b/epan/wspython/wspy_libws.py
-index a293a17..73ce012 100755
+index a293a17..0c528e4 100755
 --- a/epan/wspython/wspy_libws.py
 +++ b/epan/wspython/wspy_libws.py
 @@ -35,7 +35,7 @@ def get_libws_libname():
@@ -15,7 +15,7 @@ index a293a17..73ce012 100755
      return 'libwireshark.dll'
    else:
 -    return 'libwireshark.so'
-+    return 'libwireshark.so.2'
++    return 'libwireshark.so.3'
  
  def get_libws_handle():
    global __libwireshark
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 6d61ce0..13ff90e 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,7 +1,8 @@
 From: Evan Huus <eapache at gmail.com>
 Date: Sun, 18 Aug 2013 19:49:08 +0000
-Subject: [PATCH] From Peter Lemenkov via
- https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8326
+Subject: [PATCH] Dissector for the Sippy RTPproxy controlling protocol
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8326
 
 Dissector for the Sippy RTPproxy controlling protocol. RTPproxy is a well-known
 (among SIP-engineers) application and it operates using its own simple
@@ -129,6 +130,30 @@ Reinitialize counter between loops to avoid an out of bound access found with fu
 
 svn path=/trunk/; revision=53612
 
+RTPproxy dissector: Add expert info about timeouts.  Bug 9484 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9484)
+
+From Peter Lemenkov
+
+svn path=/trunk/; revision=53622
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9487 :
+Use RTP payload descriptions from RTP dissector in RTPproxy codec param value
+
+svn path=/trunk/; revision=53658
+
+From Peter Lemenkov via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9490 :
+Couple packets in RTPproxy dissector not only with CookieID but also with Call-IDs
+
+svn path=/trunk/; revision=53673
+
+Fix Coverity CID 1134045: Printf format string issue.  (As documented in the printf man page for the ' option, "Note that many versions of gcc(1) cannot parse this option and will issue a warning."  (r47940 reverted a similar change, so this keeps things consistent.)
+
+svn path=/trunk/; revision=53705
+
+Clean up indentation.
+
+svn path=/trunk/; revision=53742
+
 diff --git a/AUTHORS b/AUTHORS
 index 10782b0..e7b3c18 100644
 --- a/AUTHORS
@@ -167,10 +192,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..831448b
+index 0000000..1a80ee7
 --- /dev/null
 +++ b/epan/dissectors/packet-rtpproxy.c
-@@ -0,0 +1,1350 @@
+@@ -0,0 +1,1387 @@
 +/* packet-rtpproxy.c
 + * RTPproxy command protocol dissector
 + * Copyright 2013, Peter Lemenkov <lemenkov at gmail.com>
@@ -210,6 +235,8 @@ index 0000000..831448b
 +#include <epan/packet.h>
 +#include <epan/prefs.h>
 +#include <epan/conversation.h>
++#include <epan/expert.h>
++#include <epan/rtp_pt.h>
 +
 +#ifdef HAVE_ARPA_INET_H
 +#include <arpa/inet.h>
@@ -272,6 +299,7 @@ index 0000000..831448b
 +	guint32 req_frame;
 +	guint32 resp_frame;
 +	nstime_t req_time;
++	gchar* callid;
 +} rtpproxy_info_t;
 +
 +static dissector_handle_t rtcp_handle;
@@ -421,9 +449,14 @@ index 0000000..831448b
 +
 +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);
 +
@@ -492,7 +525,8 @@ index 0000000..831448b
 +				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);
++					ti = proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_codec, tvb, begin+offset, codec_len, ENC_ASCII | ENC_NA);
++					proto_item_append_text(ti, " (%s)", val_to_str_ext((guint)strtoul(tvb_format_text(tvb,begin+offset,codec_len),NULL,10), &rtp_payload_type_vals_ext, "Unknown"));
 +					offset += codec_len;
 +					if(codecs[i+1])
 +						offset++; /* skip comma */
@@ -542,7 +576,8 @@ index 0000000..831448b
 +			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);
++				ti = proto_tree_add_item(another_tree, hf_rtpproxy_command_parameter_transcode, tvb, begin+offset, new_offset, ENC_ASCII | ENC_NA);
++				proto_item_append_text(ti, " (%s)", val_to_str_ext((guint)strtoul(tvb_format_text(tvb,begin+offset, new_offset),NULL,10), &rtp_payload_type_vals_ext, "Unknown"));
 +				offset += new_offset;
 +				break;
 +			case 'v':
@@ -556,7 +591,7 @@ index 0000000..831448b
 +	}
 +}
 +
-+void
++rtpproxy_info_t *
 +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;
@@ -568,6 +603,7 @@ index 0000000..831448b
 +			rtpproxy_info->req_frame = PINFO_FD_NUM(pinfo);
 +			rtpproxy_info->resp_frame = 0;
 +			rtpproxy_info->req_time = pinfo->fd->abs_ts;
++			rtpproxy_info->callid = NULL;
 +			se_tree_insert_string(rtpproxy_conv->trans, cookie, rtpproxy_info, 0);
 +		} else {
 +			rtpproxy_info = (rtpproxy_info_t *)se_tree_lookup_string(rtpproxy_conv->trans, cookie, 0);
@@ -588,9 +624,13 @@ index 0000000..831448b
 +				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));
 +			}
 +		}
 +	}
++	/* Could be NULL so we should check it before dereferencing */
++	return rtpproxy_info;
 +}
 +
 +void
@@ -644,6 +684,7 @@ index 0000000..831448b
 +	address addr;
 +	guint16 port;
 +	guint32 ipaddr[4];
++	rtpproxy_info_t *rtpproxy_info = NULL;
 +
 +	/* If it does not start with a printable character it's not RTPProxy */
 +	if(!isprint(tvb_get_guint8(tvb, 0)))
@@ -669,6 +710,7 @@ index 0000000..831448b
 +	/* Calculate size to prevent recalculation in the future */
 +	realsize = tvb_reported_length(tvb);
 +
++
 +	/* Check for LF (required for TCP connection, optional for UDP) */
 +	if (tvb_get_guint8(tvb, realsize - 1) == '\n'){
 +		col_set_str(pinfo->cinfo, COL_PROTOCOL, "RTPproxy");
@@ -679,6 +721,7 @@ index 0000000..831448b
 +	else
 +		col_set_str(pinfo->cinfo, COL_PROTOCOL, "RTPproxy (no LF)");
 +
++
 +	/* Try to create conversation */
 +	conversation = find_or_create_conversation(pinfo);
 +	rtpproxy_conv = (rtpproxy_conv_info_t *)conversation_get_proto_data(conversation, proto_rtpproxy);
@@ -717,7 +760,7 @@ index 0000000..831448b
 +		case 'r':
 +		case 'c':
 +		case 'q':
-+			rtpproxy_add_tid(TRUE, tvb, pinfo, rtpproxy_tree, rtpproxy_conv, cookie);
++			rtpproxy_info = rtpproxy_add_tid(TRUE, tvb, pinfo, rtpproxy_tree, rtpproxy_conv, cookie);
 +			col_add_fstr(pinfo->cinfo, COL_INFO, "Request: %s", rawstr);
 +			ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_request, tvb, offset, -1, ENC_NA);
 +			rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_request);
@@ -764,6 +807,8 @@ index 0000000..831448b
 +			/* Extract Call-ID */
 +			new_offset = tvb_find_guint8(tvb, offset, -1, ' ');
 +			proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_callid, tvb, offset, new_offset - offset, ENC_ASCII | ENC_NA);
++			if(rtpproxy_info && !rtpproxy_info->callid)
++				rtpproxy_info->callid = tvb_get_ephemeral_string(tvb, offset, new_offset - offset);
 +			/* Skip whitespace */
 +			offset = tvb_skip_wsp(tvb, new_offset+1, -1);
 +
@@ -856,7 +901,7 @@ index 0000000..831448b
 +		case '7':
 +		case '8':
 +		case '9':
-+			rtpproxy_add_tid(FALSE, tvb, pinfo, rtpproxy_tree, rtpproxy_conv, cookie);
++			rtpproxy_info = rtpproxy_add_tid(FALSE, tvb, pinfo, rtpproxy_tree, rtpproxy_conv, cookie);
 +			if (tmp == 'e')
 +				col_add_fstr(pinfo->cinfo, COL_INFO, "Error reply: %s", rawstr);
 +			else
@@ -865,6 +910,11 @@ index 0000000..831448b
 +			ti = proto_tree_add_item(rtpproxy_tree, hf_rtpproxy_reply, tvb, offset, -1, ENC_NA);
 +			rtpproxy_tree = proto_item_add_subtree(ti, ett_rtpproxy_reply);
 +
++			if(rtpproxy_info && rtpproxy_info->callid){
++				ti = proto_tree_add_string(rtpproxy_tree, hf_rtpproxy_callid, tvb, offset, 0, rtpproxy_info->callid);
++				PROTO_ITEM_SET_GENERATED(ti);
++			}
++
 +			if (tmp == 'e'){
 +				tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE);
 +				tmpstr = tvb_get_ephemeral_string(tvb, offset, tmp);
@@ -1456,6 +1506,7 @@ index 0000000..831448b
 +	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 */
@@ -1467,11 +1518,18 @@ index 0000000..831448b
 +								 "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
@@ -1507,6 +1565,10 @@ index 0000000..831448b
 +	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-0015-From-Dirk-Jagdmann-Make-sure-err_str-is-initialized.patch b/wireshark-0015-From-Dirk-Jagdmann-Make-sure-err_str-is-initialized.patch
new file mode 100644
index 0000000..2a11c80
--- /dev/null
+++ b/wireshark-0015-From-Dirk-Jagdmann-Make-sure-err_str-is-initialized.patch
@@ -0,0 +1,19 @@
+From: Gerald Combs <gerald at wireshark.org>
+Date: Fri, 15 Nov 2013 23:16:14 +0000
+Subject: [PATCH] From Dirk Jagdmann: Make sure err_str is initialized.
+
+svn path=/trunk-1.10/; revision=53348
+
+diff --git a/ui/gtk/main_welcome.c b/ui/gtk/main_welcome.c
+index 6de0fea..017f2e4 100644
+--- a/ui/gtk/main_welcome.c
++++ b/ui/gtk/main_welcome.c
+@@ -981,7 +981,7 @@ static void fill_capture_box(void)
+     GtkCellRenderer   *renderer;
+     GtkTreeViewColumn *column;
+     int               error = 0;
+-    gchar             *label_text, *err_str;
++    gchar             *label_text = NULL, *err_str = NULL;
+ #ifdef _WIN32
+     DWORD reg_ret;
+     DWORD chimney_enabled = 0;
diff --git a/wireshark-0016-Crash-when-selecting-Decode-As-based-on-SCTP-PPID.-B.patch b/wireshark-0016-Crash-when-selecting-Decode-As-based-on-SCTP-PPID.-B.patch
new file mode 100644
index 0000000..48114ea
--- /dev/null
+++ b/wireshark-0016-Crash-when-selecting-Decode-As-based-on-SCTP-PPID.-B.patch
@@ -0,0 +1,32 @@
+From: Michael Mann <mmann78 at netscape.net>
+Date: Thu, 28 Nov 2013 16:51:08 +0000
+Subject: [PATCH] Crash when selecting "Decode As" based on SCTP PPID.  Bug
+ 8976 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8976)
+
+Fixed by defaulting PPID value to LAST_PPID (which should make Decode As a no-op)
+
+svn path=/trunk-1.10/; revision=53627
+
+diff --git a/ui/gtk/decode_as_dlg.c b/ui/gtk/decode_as_dlg.c
+index e772099..4e863f1 100644
+--- a/ui/gtk/decode_as_dlg.c
++++ b/ui/gtk/decode_as_dlg.c
+@@ -970,7 +970,7 @@ decode_transport(GtkWidget *notebook_pg)
+     gchar *table_name;
+     gint requested_srcdst, requested_port, ppid;
+     gpointer portp;
+-    gpointer ptr;
++    gpointer ptr = GUINT_TO_POINTER(LAST_PPID);
+ #ifdef DEBUG
+     gchar *string;
+ #endif
+@@ -980,8 +980,7 @@ decode_transport(GtkWidget *notebook_pg)
+         gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(GTK_TREE_VIEW(list)));
+ 
+     combo_box = (GtkWidget *)g_object_get_data(G_OBJECT(notebook_pg), E_COMBO_BOX_SRCDST);
+-    if (!ws_combo_box_get_active_pointer(GTK_COMBO_BOX(combo_box), &ptr))
+-        g_assert_not_reached();  /* Programming error if no active item in combo_box */
++    ws_combo_box_get_active_pointer(GTK_COMBO_BOX(combo_box), &ptr);
+     requested_srcdst = GPOINTER_TO_INT(ptr);
+ 
+ #ifdef DEBUG
diff --git a/wireshark-0017-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch b/wireshark-0017-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch
new file mode 100644
index 0000000..2a7832f
--- /dev/null
+++ b/wireshark-0017-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch
@@ -0,0 +1,295 @@
+From: Pascal Quantin <pascal.quantin at gmail.com>
+Date: Fri, 6 Dec 2013 07:14:45 +0000
+Subject: [PATCH] Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9488
+ : Remove global gpinfo variable and use pinfo directly (backport of r49145)
+
+svn path=/trunk-1.10/; revision=53803
+
+diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c
+index a89e970..0421cae 100644
+--- a/epan/dissectors/packet-bssgp.c
++++ b/epan/dissectors/packet-bssgp.c
+@@ -79,7 +79,6 @@ void proto_reg_handoff_bssgp(void);
+ static int bssgp_decode_nri = 0;
+ static guint bssgp_nri_length = 4;
+ 
+-static packet_info *gpinfo;
+ static guint8 g_pdu_type, g_rim_application_identity;
+ static proto_tree *gparent_tree;
+ static dissector_handle_t llc_handle;
+@@ -898,7 +897,7 @@ de_bssgp_flush_action(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g
+  */
+ 
+ static guint16
+-de_bssgp_llc_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
++de_bssgp_llc_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t *next_tvb=NULL;
+     guint32 curr_offset;
+@@ -912,10 +911,10 @@ de_bssgp_llc_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint3
+ 
+     if(next_tvb){
+         if (llc_handle) {
+-            call_dissector(llc_handle, next_tvb, gpinfo, gparent_tree);
++            call_dissector(llc_handle, next_tvb, pinfo, gparent_tree);
+         }
+         else if (data_handle) {
+-            call_dissector(data_handle, next_tvb, gpinfo, gparent_tree);
++            call_dissector(data_handle, next_tvb, pinfo, gparent_tree);
+         }
+     }
+ 
+@@ -1100,7 +1099,7 @@ static const value_string bssgp_precedence_dl[] = {
+ };
+ 
+ static guint16
+-de_bssgp_qos_profile(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_qos_profile(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     proto_item *pi, *pre_item;
+     guint32 curr_offset;
+@@ -1113,7 +1112,7 @@ de_bssgp_qos_profile(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gu
+     /* octet 3-4 Peak bit rate provided by the network (note)
+      * NOTE: The bit rate 0 (zero) shall mean "best effort" in this IE.
+      */
+-    link_dir = gpinfo->link_dir;
++    link_dir = pinfo->link_dir;
+ 
+     peak_bit_rate = tvb_get_ntohs(tvb, curr_offset);
+     pi = proto_tree_add_text(tree, tvb, curr_offset, 1, "Peak bit rate: ");
+@@ -1515,7 +1514,7 @@ de_bssgp_serv_utran_cco(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+  * 11.3.48  NSEI (Network Service Entity Identifier)
+  */
+ static guint16
+-de_bssgp_nsei(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_nsei(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     guint32 curr_offset;
+     guint16 nsei;
+@@ -1526,7 +1525,7 @@ de_bssgp_nsei(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
+     proto_tree_add_item(tree, hf_bssgp_nsei, tvb, curr_offset, 2, ENC_BIG_ENDIAN);
+     curr_offset+=2;
+ 
+-    col_append_sep_fstr(gpinfo->cinfo, COL_INFO, BSSGP_SEP, "NSEI %u", nsei);
++    col_append_sep_fstr(pinfo->cinfo, COL_INFO, BSSGP_SEP, "NSEI %u", nsei);
+ 
+ 
+     return(curr_offset-offset);
+@@ -1535,7 +1534,7 @@ de_bssgp_nsei(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 o
+  * 11.3.49  RRLP APDU
+  */
+ static guint16
+-de_bssgp_rrlp_apdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_rrlp_apdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t *next_tvb=NULL;
+     guint32 curr_offset;
+@@ -1555,9 +1554,9 @@ de_bssgp_rrlp_apdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guin
+ 
+     if(next_tvb){
+         if (rrlp_handle) {
+-            call_dissector(rrlp_handle, next_tvb, gpinfo, gparent_tree);
++            call_dissector(rrlp_handle, next_tvb, pinfo, gparent_tree);
+         }else if (data_handle) {
+-            call_dissector(data_handle, next_tvb, gpinfo, gparent_tree);
++            call_dissector(data_handle, next_tvb, pinfo, gparent_tree);
+         }
+     }
+     return(len);
+@@ -1748,7 +1747,7 @@ de_bssgp_ran_information_request_app_cont(tvbuff_t *tvb, proto_tree *tree, packe
+             {
+             asn1_ctx_t asn1_ctx;
+ 
+-            asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, gpinfo);
++            asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+             /* 11.3.63.1.4  RAN-INFORMATION-REQUEST Application Container for the SON Transfer Application */
+             /* Reporting Cell Identifier */
+             /* convert to bit offset */
+@@ -1765,7 +1764,7 @@ de_bssgp_ran_information_request_app_cont(tvbuff_t *tvb, proto_tree *tree, packe
+              * 3GPP TS 25.413
+              */
+             new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+-            curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree, NULL);
++            curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, pinfo, tree, NULL);
+             break;
+         default :
+             proto_tree_add_text(tree, tvb, curr_offset, len, "Unknown RIM Application Identity");
+@@ -1847,7 +1846,7 @@ de_bssgp_ran_information_app_cont_unit(tvbuff_t *tvb, proto_tree *tree, packet_i
+                     if (msg_fcn_p == NULL){
+                         proto_tree_add_text(si_tree, tvb, curr_offset, 21, "Unknown SI message");
+                     }else{
+-                        (*msg_fcn_p)(tvb, si_tree, gpinfo, curr_offset+1, 20);
++                        (*msg_fcn_p)(tvb, si_tree, pinfo, curr_offset+1, 20);
+                     }
+                     curr_offset+=21;
+                 }
+@@ -1895,14 +1894,14 @@ de_bssgp_ran_information_app_cont_unit(tvbuff_t *tvb, proto_tree *tree, packet_i
+                      * Source Cell ID) as defined in 3GPP TS 25.413
+                      */
+                     new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+-                    curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree, NULL);
++                    curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, pinfo, tree, NULL);
+                     break;
+                 case 2:
+                     /* If the RAT discriminator field indicates E-UTRAN, this field is encoded as the E-UTRAN CGI IE as
+                      * defined in 3GPP TS 36.413
+                      */
+                     new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+-                    curr_offset = curr_offset + dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree, NULL);
++                    curr_offset = curr_offset + dissect_s1ap_Global_ENB_ID_PDU(new_tvb, pinfo, tree, NULL);
+                     break;
+                 default:
+                     break;
+@@ -1916,7 +1915,7 @@ de_bssgp_ran_information_app_cont_unit(tvbuff_t *tvb, proto_tree *tree, packet_i
+              * (UTRAN Source Cell ID) as defined in 3GPP TS 25.413
+              */
+             new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+-            curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, gpinfo, tree, NULL);
++            curr_offset = curr_offset + dissect_ranap_SourceCellID_PDU(new_tvb, pinfo, tree, NULL);
+             /* Octet (m+1)-n UTRA SI Container
+              * UTRA SI Container: This field contains System Information Container valid for the reporting cell
+              * encoded as defined in TS 25.331
+@@ -1972,7 +1971,7 @@ static const value_string bssgp_utra_si_cause_vals[] = {
+ };
+ 
+ static guint16
+-de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t *new_tvb = NULL;
+     guint32 curr_offset;
+@@ -2018,7 +2017,7 @@ de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
+              * The "SON Transfer Cause" field is encoded as the SON Transfer Cause IE as defined in 3GPP TS 36.413
+              */
+             new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+-            curr_offset = curr_offset + dissect_s1ap_SONtransferCause_PDU(new_tvb, gpinfo, tree, NULL);
++            curr_offset = curr_offset + dissect_s1ap_SONtransferCause_PDU(new_tvb, pinfo, tree, NULL);
+             /* Erroneous Application Container including IEI and LI */
+             proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI");
+             break;
+@@ -2212,7 +2211,7 @@ static const value_string bssgp_ra_discriminator_vals[] = {
+ };
+ 
+ static guint16
+-de_bssgp_rim_routing_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_rim_routing_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     guint8 oct;
+     guint16 rnc_id;
+@@ -2261,7 +2260,7 @@ de_bssgp_rim_routing_inf(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
+             curr_offset = curr_offset+ de_emm_trac_area_id(tvb, tree, pinfo, curr_offset, 5, add_string, string_len);
+             /* Octets 9-n contain the Global eNB ID (see 3GPP TS 36.413 [36]) of the eNodeB. */
+             new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+-            dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree, NULL);
++            dissect_s1ap_Global_ENB_ID_PDU(new_tvb, pinfo, tree, NULL);
+             break;
+         default:
+             proto_tree_add_text(tree, tvb, curr_offset, 3, "Unknown RIM Routing Address discriminator");
+@@ -2301,7 +2300,7 @@ de_bssgp_mbms_session_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_
+  * 11.3.72  MBMS Session Duration
+  */
+ static guint16
+-de_bssgp_mbms_session_dur(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_mbms_session_dur(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t *new_tvb;
+     guint32 curr_offset;
+@@ -2310,7 +2309,7 @@ de_bssgp_mbms_session_dur(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
+ 
+     /* AVP Code: 904 MBMS-Session-Duration Registered by packet-gtp.c */
+     new_tvb =tvb_new_subset(tvb, offset, len, len);
+-    dissector_try_uint(diameter_3gpp_avp_dissector_table, 904, new_tvb, gpinfo, tree);
++    dissector_try_uint(diameter_3gpp_avp_dissector_table, 904, new_tvb, pinfo, tree);
+ 
+     return(curr_offset-offset);
+ }
+@@ -2322,7 +2321,7 @@ de_bssgp_mbms_session_dur(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U
+  *
+  */
+ static guint16
+-de_bssgp_mbms_sai_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
++de_bssgp_mbms_sai_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t *new_tvb;
+     guint32 curr_offset;
+@@ -2331,7 +2330,7 @@ de_bssgp_mbms_sai_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_,
+ 
+     /* AVP Code: 903 MBMS-Service-Area Registered by packet-gtp.c */
+     new_tvb =tvb_new_subset(tvb, offset, len, len);
+-    dissector_try_uint(diameter_3gpp_avp_dissector_table, 903, new_tvb, gpinfo, tree);
++    dissector_try_uint(diameter_3gpp_avp_dissector_table, 903, new_tvb, pinfo, tree);
+ 
+     return(curr_offset-offset);
+ }
+@@ -2840,7 +2839,7 @@ de_bssgp_mbms_session_rep_no(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
+  * 11.3.94  Inter RAT Handover Info
+  */
+ static guint16
+-de_bssgp_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t    *new_tvb;
+     guint32 curr_offset;
+@@ -2852,7 +2851,7 @@ de_bssgp_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _
+      * Inter RAT Handover Information coded as specified in 3GPP
+      * Technical Specification 25.331
+      */
+-    dissect_rrc_InterRATHandoverInfo_PDU(new_tvb, gpinfo, tree, NULL);
++    dissect_rrc_InterRATHandoverInfo_PDU(new_tvb, pinfo, tree, NULL);
+ 
+     return(len);
+ }
+@@ -3096,7 +3095,7 @@ de_bssgp_enb_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
+ 
+     /* Octets 8-n contain the Global eNB ID (see 3GPP TS 36.413) of the eNodeB. */
+     new_tvb = tvb_new_subset_remaining(tvb, curr_offset);
+-    dissect_s1ap_Global_ENB_ID_PDU(new_tvb, gpinfo, tree, NULL);
++    dissect_s1ap_Global_ENB_ID_PDU(new_tvb, pinfo, tree, NULL);
+ 
+     return(len);
+ }
+@@ -3104,7 +3103,7 @@ de_bssgp_enb_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 off
+  * 11.3.104     E-UTRAN Inter RAT Handover Info
+  */
+ static guint16
+-de_bssgp_e_utran_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_e_utran_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t    *new_tvb;
+     guint32 curr_offset;
+@@ -3118,7 +3117,7 @@ de_bssgp_e_utran_inter_rat_ho_info(tvbuff_t *tvb, proto_tree *tree, packet_info
+      * significant bit of the first octet of the octet string contains bit 8 of
+      * the first octet of the IE.
+      */
+-    dissect_lte_rrc_UE_EUTRA_Capability_PDU(new_tvb, gpinfo, tree, NULL);
++    dissect_lte_rrc_UE_EUTRA_Capability_PDU(new_tvb, pinfo, tree, NULL);
+ 
+     return(len);
+ }
+@@ -3181,7 +3180,7 @@ de_bssgp_reliable_inter_rat_ho_inf(tvbuff_t *tvb, proto_tree *tree, packet_info
+  * 11.3.108     SON Transfer Application Identity
+  */
+ static guint16
+-de_bssgp_son_transfer_app_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset _U_, guint len _U_, gchar *add_string _U_, int string_len _U_)
++de_bssgp_son_transfer_app_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset _U_, guint len _U_, gchar *add_string _U_, int string_len _U_)
+ {
+     tvbuff_t *next_tvb;
+ 
+@@ -3190,7 +3189,7 @@ de_bssgp_son_transfer_app_id(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo
+      */
+     if(len > 0){
+         next_tvb = tvb_new_subset(tvb, offset, len, len);
+-        dissect_s1ap_SONtransferApplicationIdentity_PDU(next_tvb, gpinfo, tree, NULL);
++        dissect_s1ap_SONtransferApplicationIdentity_PDU(next_tvb, pinfo, tree, NULL);
+     }
+ 
+     return(len);
+@@ -6370,8 +6369,6 @@ dissect_bssgp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+     int          hf_idx;
+     void        (*msg_fcn_p)(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 offset, guint len);
+ 
+-    /* Save pinfo */
+-    gpinfo = pinfo;
+     g_rim_application_identity = 0;
+     gparent_tree = tree;
+     len = tvb_length(tvb);
diff --git a/wireshark.spec b/wireshark.spec
index fc1172b..e2e9413 100644
--- a/wireshark.spec
+++ b/wireshark.spec
@@ -21,7 +21,7 @@
 Summary:	Network traffic analyzer
 Name:		wireshark
 Version:	1.10.3
-Release:	5%{?dist}
+Release:	6%{?dist}
 License:	GPL+
 Group:		Applications/Internet
 Source0:	http://wireshark.org/download/src/%{name}-%{version}.tar.bz2
@@ -31,7 +31,9 @@ Patch1:		wireshark-0001-enable-Lua-support.patch
 Patch2:		wireshark-0002-Customize-permission-denied-error.patch
 # Fedora-specific
 Patch3:		wireshark-0003-Load-correct-shared-object-name-in-python.patch
+# No longer necessary - will be removed in the next release (1.12.x)
 Patch4:		wireshark-0004-fix-documentation-build-error.patch
+# Will be proposed upstream
 Patch5:		wireshark-0005-fix-string-overrun-in-plugins-profinet.patch
 # Backported from upstream. See https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8326
 Patch6:		wireshark-0006-From-Peter-Lemenkov-via-https-bugs.wireshark.org-bug.patch
@@ -51,9 +53,12 @@ Patch12:	wireshark-0012-move-default-temporary-directory-to-var-tmp.patch
 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=9484
-Patch15:	wireshark-0015-Add-expert-info-about-timeouts.patch
+# Backported from upstream.
+Patch15:	wireshark-0015-From-Dirk-Jagdmann-Make-sure-err_str-is-initialized.patch
+# Backported from upstream.
+Patch16:	wireshark-0016-Crash-when-selecting-Decode-As-based-on-SCTP-PPID.-B.patch
+# Backported from upstream.
+Patch17:	wireshark-0017-Fix-https-bugs.wireshark.org-bugzilla-show_bug.cgi-i.patch
 
 Url:		http://www.wireshark.org/
 BuildRequires:	libpcap-devel >= 0.9
@@ -151,7 +156,7 @@ and plugins.
 
 %patch2 -p1 -b .perm_denied_customization
 %patch3 -p1 -b .soname
-%patch4 -p1 -b .pod2man
+#%patch4 -p1 -b .pod2man
 %patch5 -p1 -b .profinet_crash
 %patch6 -p1 -b .rtpproxy
 %patch7 -p1 -b .openflow
@@ -162,7 +167,9 @@ and plugins.
 %patch12 -p1 -b .tmp_dir
 %patch13 -p1 -b .allow_64kpackets_for_usb
 %patch14 -p1 -b .dont_die_during_sip_dissection
-%patch15 -p1 -b .add_expert_info_about_rtpproxy
+%patch15 -p1 -b .fix_main_window
+%patch16 -p1 -b .fix_sctp
+%patch17 -p1 -b .fix_global_pinfo
 
 %build
 %ifarch s390 s390x sparcv9 sparc64
@@ -350,13 +357,25 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 
 %files devel
 %doc doc/README.*
+%if %{with_lua}
 %config(noreplace) %{_datadir}/wireshark/init.lua
+%endif
 %{_includedir}/wireshark
 %{_libdir}/lib*.so
 %{_libdir}/pkgconfig/*
 %{_datadir}/aclocal/*
 
 %changelog
+* Fri Dec 06 2013 Peter Lemenkov <lemenkov at gmail.com> - 1.10.3-6
+- Updated RTPproxy dissector (again), squashed patch no. 15 (applied upstream).
+- Use proper soname in the python scripts
+- Don't apply no longer needed fix for pod2man.
+- Fix for main window. See patch no. 15
+- Fix for SCTP dissection. See patch no. 16
+- Fix for rare issue in Base Station Subsystem GPRS Protocol dissection. See
+  patch no. 17
+- Fix building w/o Lua
+
 * 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


More information about the scm-commits mailing list