import wireshark-2.6.2-9.el8
This commit is contained in:
commit
a2aad35177
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
SOURCES/wireshark-2.6.2.tar.xz
|
1
.wireshark.metadata
Normal file
1
.wireshark.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
52517c30926211b0b718815b51a3f06a18d8f5da SOURCES/wireshark-2.6.2.tar.xz
|
1
SOURCES/90-wireshark-usbmon.rules
Normal file
1
SOURCES/90-wireshark-usbmon.rules
Normal file
@ -0,0 +1 @@
|
|||||||
|
SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640"
|
60
SOURCES/SIGNATURES-2.6.2.txt
Normal file
60
SOURCES/SIGNATURES-2.6.2.txt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
|
Hash: SHA512
|
||||||
|
|
||||||
|
wireshark-2.6.2.tar.xz: 28392140 bytes
|
||||||
|
SHA256(wireshark-2.6.2.tar.xz)=49b2895ee3ba17ef9ef0aebfdc4d32a778e0f36ccadde184516557d5f3357094
|
||||||
|
RIPEMD160(wireshark-2.6.2.tar.xz)=e9b782d49d9a063ba556320e9f2c08dea079967d
|
||||||
|
SHA1(wireshark-2.6.2.tar.xz)=52517c30926211b0b718815b51a3f06a18d8f5da
|
||||||
|
|
||||||
|
Wireshark-win64-2.6.2.exe: 59963968 bytes
|
||||||
|
SHA256(Wireshark-win64-2.6.2.exe)=88aa2ca018090fc73ffb273aa1ba9f690ec06deb77d1ec7ff9b39fe646ca2877
|
||||||
|
RIPEMD160(Wireshark-win64-2.6.2.exe)=3b947ada3e64bfb1c1b16a470926d94ed9db391b
|
||||||
|
SHA1(Wireshark-win64-2.6.2.exe)=90217eb0ed020a53a9ae80682c0881d347d11b4a
|
||||||
|
|
||||||
|
Wireshark-win32-2.6.2.exe: 54249888 bytes
|
||||||
|
SHA256(Wireshark-win32-2.6.2.exe)=3d886e435570b7326f53d00996040ef65b9e2a5bffe48645ce29ea5a23930801
|
||||||
|
RIPEMD160(Wireshark-win32-2.6.2.exe)=c2c5afa101559976439f36401ea1cc4564fa624e
|
||||||
|
SHA1(Wireshark-win32-2.6.2.exe)=eb7c50e80d6e7ec834599c1facfd6a3fd66aebf8
|
||||||
|
|
||||||
|
Wireshark-win32-2.6.2.msi: 43728896 bytes
|
||||||
|
SHA256(Wireshark-win32-2.6.2.msi)=99d5d94345a20e177736533840ff59859a76e864247a8146a73fca227f004043
|
||||||
|
RIPEMD160(Wireshark-win32-2.6.2.msi)=7f21412e4d335f6e797356b968fbef14afb03b8c
|
||||||
|
SHA1(Wireshark-win32-2.6.2.msi)=05f1f9c4b9bed8c4447e5e31f907c578f52cf067
|
||||||
|
|
||||||
|
Wireshark-win64-2.6.2.msi: 49364992 bytes
|
||||||
|
SHA256(Wireshark-win64-2.6.2.msi)=381076d09c757038072f761f7eee9d5aa45fa8423b771ba34ddbd8b56f2c429c
|
||||||
|
RIPEMD160(Wireshark-win64-2.6.2.msi)=a080eec0f8bd089f493d0c76837d7fe03c1fa0dd
|
||||||
|
SHA1(Wireshark-win64-2.6.2.msi)=2c6b5bf555729d1e5ee3a1dda8d2b14d3bb01759
|
||||||
|
|
||||||
|
WiresharkPortable_2.6.2.paf.exe: 37482552 bytes
|
||||||
|
SHA256(WiresharkPortable_2.6.2.paf.exe)=d36727bdb8cc3a72bfb80084d3c634c3bfa4661f4de68d644b43ef5d41c52b69
|
||||||
|
RIPEMD160(WiresharkPortable_2.6.2.paf.exe)=a98756bf5a67e47e1ca9ecd8836f2e6913a56f27
|
||||||
|
SHA1(WiresharkPortable_2.6.2.paf.exe)=dd11e62f34212be77abee9d2227a2fd3b613b0a5
|
||||||
|
|
||||||
|
Wireshark 2.6.2 Intel 64.dmg: 169012317 bytes
|
||||||
|
SHA256(Wireshark 2.6.2 Intel 64.dmg)=ef54b04a73df4069e29e77bc1940f3b767ee498c4e28f739eabda78ef71ab4a9
|
||||||
|
RIPEMD160(Wireshark 2.6.2 Intel 64.dmg)=f93d2cc4057337ca76d1aa435b0039a60927bebb
|
||||||
|
SHA1(Wireshark 2.6.2 Intel 64.dmg)=3a46de720848b286e7c115c75c7b00bcd08155aa
|
||||||
|
|
||||||
|
You can validate these hashes using the following commands (among others):
|
||||||
|
|
||||||
|
Windows: certutil -hashfile Wireshark-win64-x.y.z.exe SHA256
|
||||||
|
Linux (GNU Coreutils): sha256sum wireshark-x.y.z.tar.xz
|
||||||
|
macOS: shasum -a 256 "Wireshark x.y.z Intel 64.dmg"
|
||||||
|
Other: openssl sha256 wireshark-x.y.z.tar.xz
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAEBCgAdFiEEWlrbp9vqbD+HIk8ZgiRKeOb+ruoFAltPqKQACgkQgiRKeOb+
|
||||||
|
rurNbg//dw5903/0W2vw1a6u8F9JVvXfctb9/t1IOD2yT2omPXFTfqEkcwcY5c8W
|
||||||
|
FoSsflHM6g4rf8jqpqyipSPb6lYRJjm1fZGDzTilVPe+pcAV/HZ2QSdwOgw9FiAs
|
||||||
|
sV2eZdqPMVqdeLgDGtC4aHHabwsytFNaWtZLVyKr4ojdUfJNIBa40iUrItxXfgxA
|
||||||
|
GDCnVpdapuygk4rMeDpi3qZtvEKmgZ9Yj5aseX+wBYIT21EShP/gHSKNSA8x3gGz
|
||||||
|
xnpvOrz2qyJmWB6sBmIQndEXrYdazKr14Fzhmc2ajFMOJLwTGIZg5wl+UDnmPikW
|
||||||
|
6R1gRzSwkjEtgTKlZ9Gcel8eg6fNjW9HC9d4VjZzG4N693YrYwlpu0FIvaK+QGxE
|
||||||
|
yEJKPJnlaCi37Q6GBiKIpC5NUkTnt38Gb5DJ4/N3tk4P2LGlSyyMxLc5U096Zd8V
|
||||||
|
KCE/OVUuZs/4NsgIYaTYWDyTeNjjN2ZXnyx0N3x8yzWHcB6gYVPJc2lKouZe9XqZ
|
||||||
|
9Gz1Fr0/LEbx+r0iFOEm9pX/W8a5pzZnMn5YYUeTue61ZZp/yBOf7oTqjCVvSPHU
|
||||||
|
rZhsHMLcZnBNFoYKr03dcvukgSNsndTJPXvAEIX9FVmQUcQAEsdXRFO/csihG7l/
|
||||||
|
7KWgNjReI7eoWkBUH8sx7J+4wZVy9leWjHTtkZKTeOo6OO1vJx4=
|
||||||
|
=OiJq
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -0,0 +1,57 @@
|
|||||||
|
From: Jan Safranek <jsafrane@redhat.com>
|
||||||
|
Date: Fri, 26 Nov 2010 14:30:45 +0300
|
||||||
|
Subject: [PATCH] Customize 'permission denied' error.
|
||||||
|
|
||||||
|
Add Fedora-specific message to error output when dumpcap cannot be started
|
||||||
|
because of permissions.
|
||||||
|
|
||||||
|
Signed-off-by: Jan Safranek <jsafrane@redhat.com>
|
||||||
|
|
||||||
|
diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c
|
||||||
|
index 2f9d2cc..b18e47f 100644
|
||||||
|
--- a/capchild/capture_sync.c
|
||||||
|
+++ b/capchild/capture_sync.c
|
||||||
|
@@ -375,6 +375,7 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, voi
|
||||||
|
gchar *signal_pipe_name;
|
||||||
|
#else
|
||||||
|
char errmsg[1024+1];
|
||||||
|
+ const char *securitymsg = "";
|
||||||
|
int sync_pipe[2]; /* pipe used to send messages from child to parent */
|
||||||
|
enum PIPES { PIPE_READ, PIPE_WRITE }; /* Constants 0 and 1 for PIPE_READ and PIPE_WRITE */
|
||||||
|
#endif
|
||||||
|
@@ -728,8 +729,11 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, voi
|
||||||
|
dup2(sync_pipe[PIPE_WRITE], 2);
|
||||||
|
ws_close(sync_pipe[PIPE_READ]);
|
||||||
|
execv(argv[0], argv);
|
||||||
|
- g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
|
||||||
|
- argv[0], g_strerror(errno));
|
||||||
|
+ if (errno == EPERM || errno == EACCES)
|
||||||
|
+ securitymsg = "\nAre you a member of the 'wireshark' group? Try running\n'usermod -a -G wireshark _your_username_' as root.";
|
||||||
|
+ g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s%s",
|
||||||
|
+ argv[0], g_strerror(errno), securitymsg);
|
||||||
|
+
|
||||||
|
sync_pipe_errmsg_to_parent(2, errmsg, "");
|
||||||
|
|
||||||
|
/* Exit with "_exit()", so that we don't close the connection
|
||||||
|
@@ -826,6 +830,7 @@ sync_pipe_open_command(char** argv, int *data_read_fd,
|
||||||
|
int i;
|
||||||
|
#else
|
||||||
|
char errmsg[1024+1];
|
||||||
|
+ const char *securitymsg = "";
|
||||||
|
int sync_pipe[2]; /* pipe used to send messages from child to parent */
|
||||||
|
int data_pipe[2]; /* pipe used to send data from child to parent */
|
||||||
|
#endif
|
||||||
|
@@ -1003,8 +1008,11 @@ sync_pipe_open_command(char** argv, int *data_read_fd,
|
||||||
|
ws_close(sync_pipe[PIPE_READ]);
|
||||||
|
ws_close(sync_pipe[PIPE_WRITE]);
|
||||||
|
execv(argv[0], argv);
|
||||||
|
- g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
|
||||||
|
- argv[0], g_strerror(errno));
|
||||||
|
+ execv(argv[0], (gpointer)argv);
|
||||||
|
+ if (errno == EPERM || errno == EACCES)
|
||||||
|
+ securitymsg = "\nAre you a member of the 'wireshark' group? Try running\n'usermod -a -G wireshark _your_username_' as root.";
|
||||||
|
+ g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s%s",
|
||||||
|
+ argv[0], g_strerror(errno), securitymsg);
|
||||||
|
sync_pipe_errmsg_to_parent(2, errmsg, "");
|
||||||
|
|
||||||
|
/* Exit with "_exit()", so that we don't close the connection
|
@ -0,0 +1,18 @@
|
|||||||
|
From: Peter Hatina <phatina@redhat.com>
|
||||||
|
Date: Wed, 4 Sep 2013 10:03:57 +0200
|
||||||
|
Subject: [PATCH] fix string overrun in plugins/profinet
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/plugins/epan/profinet/packet-dcom-cba.c b/plugins/epan/profinet/packet-dcom-cba.c
|
||||||
|
index 0f1658a..f7fd322 100644
|
||||||
|
--- a/plugins/epan/profinet/packet-dcom-cba.c
|
||||||
|
+++ b/plugins/epan/profinet/packet-dcom-cba.c
|
||||||
|
@@ -555,7 +555,7 @@ dissect_ICBAPhysicalDevice_get_LogicalDevice_rqst(tvbuff_t *tvb, int offset,
|
||||||
|
packet_info *pinfo, proto_tree *tree, dcerpc_info *di, guint8 *drep)
|
||||||
|
{
|
||||||
|
guint32 u32Pointer;
|
||||||
|
- gchar szStr[1000];
|
||||||
|
+ gchar szStr[1000] = "";
|
||||||
|
guint32 u32MaxStr = sizeof(szStr);
|
||||||
|
gchar *call;
|
||||||
|
|
15
SOURCES/wireshark-0004-Restore-Fedora-specific-groups.patch
Normal file
15
SOURCES/wireshark-0004-Restore-Fedora-specific-groups.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
From: Peter Lemenkov <lemenkov@gmail.com>
|
||||||
|
Date: Fri, 13 Sep 2013 14:36:55 +0400
|
||||||
|
Subject: [PATCH] Restore Fedora-specific groups
|
||||||
|
|
||||||
|
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
|
||||||
|
diff --git a/wireshark.desktop b/wireshark.desktop
|
||||||
|
index 334db48..669c6f1 100644
|
||||||
|
--- a/wireshark.desktop
|
||||||
|
+++ b/wireshark.desktop
|
||||||
|
@@ -108,4 +108,4 @@ Terminal=false
|
||||||
|
MimeType=application/vnd.tcpdump.pcap;application/x-pcapng;application/x-snoop;application/x-iptrace;application/x-lanalyzer;application/x-nettl;application/x-radcom;application/x-etherpeek;application/x-visualnetworks;application/x-netinstobserver;application/x-5view;application/x-tektronix-rf5;application/x-micropross-mplog;application/x-apple-packetlogger;application/x-endace-erf;application/ipfix;application/x-ixia-vwr;
|
||||||
|
# Category entry according to:
|
||||||
|
# http://standards.freedesktop.org/menu-spec/1.0/
|
||||||
|
-Categories=Network;Monitor;Qt;
|
||||||
|
+Categories=Application;Network;Monitor;Qt;
|
@ -0,0 +1,20 @@
|
|||||||
|
From: Kenneth Soerensen <knnthsrnsn@gmail.com>
|
||||||
|
Date: Wed, 29 Jan 2014 16:04:12 +0400
|
||||||
|
Subject: [PATCH] Fix paths in a wireshark.desktop file
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/wireshark.desktop b/wireshark.desktop
|
||||||
|
index 669c6f1..f7df1f3 100644
|
||||||
|
--- a/wireshark.desktop
|
||||||
|
+++ b/wireshark.desktop
|
||||||
|
@@ -102,8 +102,8 @@ Comment[tr]=Ağ trafiği çözümleyicisi
|
||||||
|
Comment[vi]=Trình phân tích giao thông mạng
|
||||||
|
Comment[uk]=Аналізатор мережевого трафіку
|
||||||
|
Icon=wireshark
|
||||||
|
-TryExec=wireshark
|
||||||
|
-Exec=wireshark %f
|
||||||
|
+TryExec=/usr/bin/wireshark
|
||||||
|
+Exec=/usr/bin/wireshark %f
|
||||||
|
Terminal=false
|
||||||
|
MimeType=application/vnd.tcpdump.pcap;application/x-pcapng;application/x-snoop;application/x-iptrace;application/x-lanalyzer;application/x-nettl;application/x-radcom;application/x-etherpeek;application/x-visualnetworks;application/x-netinstobserver;application/x-5view;application/x-tektronix-rf5;application/x-micropross-mplog;application/x-apple-packetlogger;application/x-endace-erf;application/ipfix;application/x-ixia-vwr;
|
||||||
|
# Category entry according to:
|
330
SOURCES/wireshark-0006-Move-tmp-to-var-tmp.patch
Normal file
330
SOURCES/wireshark-0006-Move-tmp-to-var-tmp.patch
Normal file
@ -0,0 +1,330 @@
|
|||||||
|
From cb54210f7f02b07768cfbf49ae266d487f580e1b Mon Sep 17 00:00:00 2001
|
||||||
|
From: rpm-build <rpm-build>
|
||||||
|
Date: Thu, 29 Jun 2017 15:32:58 +0200
|
||||||
|
Subject: [PATCH] Move /tmp to /var/tmp
|
||||||
|
|
||||||
|
Fedora is using tmpfs which is limited by the size of RAM, thus we need
|
||||||
|
to use different directory on different filesystem.
|
||||||
|
---
|
||||||
|
ui/gtk/about_dlg.c | 3 +-
|
||||||
|
ui/qt/about_dialog.cpp | 3 +-
|
||||||
|
ui/qt/iax2_analysis_dialog.cpp | 5 +--
|
||||||
|
ui/qt/rtp_analysis_dialog.cpp | 5 +--
|
||||||
|
ui/qt/rtp_audio_stream.cpp | 3 +-
|
||||||
|
wsutil/Makefile.am | 6 ++--
|
||||||
|
wsutil/tempfile.c | 9 +++---
|
||||||
|
wsutil/tempfile.h | 4 +--
|
||||||
|
wsutil/wstmpdir.c | 70 ++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
wsutil/wstmpdir.h | 39 +++++++++++++++++++++++
|
||||||
|
10 files changed, 132 insertions(+), 15 deletions(-)
|
||||||
|
create mode 100644 wsutil/wstmpdir.c
|
||||||
|
create mode 100644 wsutil/wstmpdir.h
|
||||||
|
|
||||||
|
diff --git a/ui/gtk/about_dlg.c b/ui/gtk/about_dlg.c
|
||||||
|
index 22ca841..6bcb527 100644
|
||||||
|
--- a/ui/gtk/about_dlg.c
|
||||||
|
+++ b/ui/gtk/about_dlg.c
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
#include <wsutil/filesystem.h>
|
||||||
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
|
||||||
|
#include <wsutil/copyright_info.h>
|
||||||
|
#include <version_info.h>
|
||||||
|
#ifdef HAVE_LIBSMI
|
||||||
|
@@ -427,7 +428,7 @@ about_folders_page_new(void)
|
||||||
|
"capture files");
|
||||||
|
|
||||||
|
/* temp */
|
||||||
|
- about_folders_row(table, "Temp", g_get_tmp_dir(),
|
||||||
|
+ about_folders_row(table, "Temp", get_tmp_dir(),
|
||||||
|
"untitled capture files");
|
||||||
|
|
||||||
|
/* pers conf */
|
||||||
|
diff --git a/ui/qt/about_dialog.cpp b/ui/qt/about_dialog.cpp
|
||||||
|
index 31dc581..2f74285 100644
|
||||||
|
--- a/ui/qt/about_dialog.cpp
|
||||||
|
+++ b/ui/qt/about_dialog.cpp
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
|
||||||
|
#include "wireshark_application.h"
|
||||||
|
#include <wsutil/filesystem.h>
|
||||||
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
|
||||||
|
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#include <QUrl>
|
||||||
|
@@ -206,7 +206,7 @@ FolderListModel::FolderListModel(QObject * parent):
|
||||||
|
appendRow( QStringList() << tr("\"File\" dialogs") << get_last_open_dir() << tr("capture files"));
|
||||||
|
|
||||||
|
/* temp */
|
||||||
|
- appendRow( QStringList() << tr("Temp") << g_get_tmp_dir() << tr("untitled capture files"));
|
||||||
|
+ appendRow( QStringList() << tr("Temp") << get_tmp_dir() << tr("untitled capture files"));
|
||||||
|
|
||||||
|
/* pers conf */
|
||||||
|
appendRow( QStringList() << tr("Personal configuration")
|
||||||
|
diff --git a/ui/qt/iax2_analysis_dialog.cpp b/ui/qt/iax2_analysis_dialog.cpp
|
||||||
|
index ee4e5fd..fe17a95 100644
|
||||||
|
--- a/ui/qt/iax2_analysis_dialog.cpp
|
||||||
|
+++ b/ui/qt/iax2_analysis_dialog.cpp
|
||||||
|
@@ -37,6 +37,7 @@
|
||||||
|
#include "ui/rtp_stream.h"
|
||||||
|
#endif
|
||||||
|
#include <wsutil/utf8_entities.h>
|
||||||
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
|
||||||
|
|
||||||
|
#include <wsutil/g711.h>
|
||||||
|
#include <wsutil/pint.h>
|
||||||
|
@@ -271,10 +272,10 @@ Iax2AnalysisDialog::Iax2AnalysisDialog(QWidget &parent, CaptureFile &cf) :
|
||||||
|
|
||||||
|
// We keep our temp files open for the lifetime of the dialog. The GTK+
|
||||||
|
// UI opens and closes at various points.
|
||||||
|
- QString tempname = QString("%1/wireshark_iax2_f").arg(QDir::tempPath());
|
||||||
|
+ QString tempname = QString("%1/wireshark_iax2_f").arg(get_tmp_dir());
|
||||||
|
fwd_tempfile_ = new QTemporaryFile(tempname, this);
|
||||||
|
fwd_tempfile_->open();
|
||||||
|
- tempname = QString("%1/wireshark_iax2_r").arg(QDir::tempPath());
|
||||||
|
+ tempname = QString("%1/wireshark_iax2_r").arg(get_tmp_dir());
|
||||||
|
rev_tempfile_ = new QTemporaryFile(tempname, this);
|
||||||
|
rev_tempfile_->open();
|
||||||
|
|
||||||
|
diff --git a/ui/qt/rtp_analysis_dialog.cpp b/ui/qt/rtp_analysis_dialog.cpp
|
||||||
|
index 5d82e46..8008984 100644
|
||||||
|
--- a/ui/qt/rtp_analysis_dialog.cpp
|
||||||
|
+++ b/ui/qt/rtp_analysis_dialog.cpp
|
||||||
|
@@ -37,6 +37,7 @@
|
||||||
|
|
||||||
|
#include <wsutil/g711.h>
|
||||||
|
#include <wsutil/pint.h>
|
||||||
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QPushButton>
|
||||||
|
@@ -331,10 +332,10 @@ RtpAnalysisDialog::RtpAnalysisDialog(QWidget &parent, CaptureFile &cf, struct _r
|
||||||
|
|
||||||
|
// We keep our temp files open for the lifetime of the dialog. The GTK+
|
||||||
|
// UI opens and closes at various points.
|
||||||
|
- QString tempname = QString("%1/wireshark_rtp_f").arg(QDir::tempPath());
|
||||||
|
+ QString tempname = QString("%1/wireshark_rtp_f").arg(get_tmp_dir());
|
||||||
|
fwd_tempfile_ = new QTemporaryFile(tempname, this);
|
||||||
|
fwd_tempfile_->open();
|
||||||
|
- tempname = QString("%1/wireshark_rtp_r").arg(QDir::tempPath());
|
||||||
|
+ tempname = QString("%1/wireshark_rtp_r").arg(get_tmp_dir());
|
||||||
|
rev_tempfile_ = new QTemporaryFile(tempname, this);
|
||||||
|
rev_tempfile_->open();
|
||||||
|
|
||||||
|
diff --git a/ui/qt/rtp_audio_stream.cpp b/ui/qt/rtp_audio_stream.cpp
|
||||||
|
index fde66c8..b9531d2 100644
|
||||||
|
--- a/ui/qt/rtp_audio_stream.cpp
|
||||||
|
+++ b/ui/qt/rtp_audio_stream.cpp
|
||||||
|
@@ -37,6 +37,7 @@
|
||||||
|
#include <ui/rtp_stream.h>
|
||||||
|
|
||||||
|
#include <wsutil/nstime.h>
|
||||||
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
|
||||||
|
|
||||||
|
#include <QAudioFormat>
|
||||||
|
#include <QAudioOutput>
|
||||||
|
@@ -76,7 +77,7 @@ RtpAudioStream::RtpAudioStream(QObject *parent, _rtp_stream_info *rtp_stream) :
|
||||||
|
visual_sample_rate_, SPEEX_RESAMPLER_QUALITY_MIN, NULL);
|
||||||
|
speex_resampler_skip_zeros(visual_resampler_);
|
||||||
|
|
||||||
|
- QString tempname = QString("%1/wireshark_rtp_stream").arg(QDir::tempPath());
|
||||||
|
+ QString tempname = QString("%1/wireshark_rtp_stream").arg(get_tmp_dir());
|
||||||
|
tempfile_ = new QTemporaryFile(tempname, this);
|
||||||
|
tempfile_->open();
|
||||||
|
|
||||||
|
diff --git a/wsutil/Makefile.am b/wsutil/Makefile.am
|
||||||
|
index 2af1b6c..aa149a2 100644
|
||||||
|
--- a/wsutil/Makefile.am
|
||||||
|
+++ b/wsutil/Makefile.am
|
||||||
|
@@ -90,6 +90,7 @@ WSUTIL_PUBLIC_INCLUDES = \
|
||||||
|
ws_pipe.h \
|
||||||
|
ws_printf.h \
|
||||||
|
wsjsmn.h \
|
||||||
|
+ wstmpdir.h \
|
||||||
|
wsgcrypt.h \
|
||||||
|
wsgetopt.h \
|
||||||
|
wspcap.h \
|
||||||
|
@@ -168,6 +169,7 @@ libwsutil_la_SOURCES = \
|
||||||
|
ws_pipe.c \
|
||||||
|
wsgcrypt.c \
|
||||||
|
wsjsmn.c \
|
||||||
|
+ wstmpdir.c \
|
||||||
|
xtea.c
|
||||||
|
|
||||||
|
if HAVE_PLUGINS
|
||||||
|
diff --git a/wsutil/tempfile.c b/wsutil/tempfile.c
|
||||||
|
index 8e1f8dc..dcf2f78 100644
|
||||||
|
--- a/wsutil/tempfile.c
|
||||||
|
+++ b/wsutil/tempfile.c
|
||||||
|
@@ -36,6 +36,7 @@
|
||||||
|
|
||||||
|
#include "tempfile.h"
|
||||||
|
#include <wsutil/file_util.h>
|
||||||
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
|
||||||
|
|
||||||
|
#ifndef __set_errno
|
||||||
|
#define __set_errno(x) errno=(x)
|
||||||
|
@@ -83,13 +83,14 @@ mkstemps(char *path_template, int suffixlen)
|
||||||
|
*/
|
||||||
|
char *get_tempfile_path(const char *filename)
|
||||||
|
{
|
||||||
|
- return g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", g_get_tmp_dir(), filename);
|
||||||
|
+ return g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", get_tmp_dir(), filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MAX_TEMPFILES 3
|
||||||
|
|
||||||
|
/**
|
||||||
|
- * Create a tempfile with the given prefix (e.g. "wireshark").
|
||||||
|
+ * Create a tempfile with the given prefix (e.g. "wireshark"). The path
|
||||||
|
+ * is created using get_tmp_dir and mkdtemp
|
||||||
|
*
|
||||||
|
* @param namebuf If not NULL, receives the full path of the temp file.
|
||||||
|
* Should NOT be freed.
|
||||||
|
@@ -199,7 +200,7 @@ create_tempfile(char **namebuf, const char *pfx, const char *sfx)
|
||||||
|
tf[idx].path = (char *)g_malloc(tf[idx].len);
|
||||||
|
}
|
||||||
|
|
||||||
|
- tmp_dir = g_get_tmp_dir();
|
||||||
|
+ tmp_dir = get_tmp_dir();
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
_tzset();
|
||||||
|
diff --git a/wsutil/tempfile.h b/wsutil/tempfile.h
|
||||||
|
index 1dca2df..bb3160c 100644
|
||||||
|
--- a/wsutil/tempfile.h
|
||||||
|
+++ b/wsutil/tempfile.h
|
||||||
|
@@ -45,7 +45,7 @@ WS_DLL_PUBLIC char *get_tempfile_path(const char *filename);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a tempfile with the given prefix (e.g. "wireshark"). The path
|
||||||
|
- * is created using g_get_tmp_dir and mkstemp.
|
||||||
|
+ * is created using get_tmp_dir and mkstemp.
|
||||||
|
*
|
||||||
|
* @param namebuf [in,out] If not NULL, receives the full path of the temp file.
|
||||||
|
* Must NOT be freed.
|
||||||
|
diff --git a/wsutil/wstmpdir.c b/wsutil/wstmpdir.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..d8b733b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/wsutil/wstmpdir.c
|
||||||
|
@@ -0,0 +1,70 @@
|
||||||
|
+/* wstmpdir.c
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2013 Red Hat, Inc. All right reserved.
|
||||||
|
+ *
|
||||||
|
+ * Temporary directory routine
|
||||||
|
+ *
|
||||||
|
+ * This program is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License
|
||||||
|
+ * as published by the Free Software Foundation; either version 2
|
||||||
|
+ * of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This program is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License
|
||||||
|
+ * along with this program; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
+ *
|
||||||
|
+ * Author: Peter Hatina <phatina@redhat.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+
|
||||||
|
+#include <glib.h>
|
||||||
|
+#include "wstmpdir.h"
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Gets the directory to use for temporary files.
|
||||||
|
+ *
|
||||||
|
+ * Inspired by glib-2.0. If no TMP, TEMP or TMPDIR is set,
|
||||||
|
+ * /var/tmp is returned (Fedora specific).
|
||||||
|
+ *
|
||||||
|
+ * Returns: the directory to use for temporary files.
|
||||||
|
+ */
|
||||||
|
+const char *get_tmp_dir(void)
|
||||||
|
+{
|
||||||
|
+ static gchar *tmp_dir;
|
||||||
|
+
|
||||||
|
+ if (g_once_init_enter(&tmp_dir)) {
|
||||||
|
+ gchar *tmp;
|
||||||
|
+
|
||||||
|
+ tmp = g_strdup(g_getenv("TEMP"));
|
||||||
|
+ if (tmp == NULL || *tmp == '\0') {
|
||||||
|
+ g_free(tmp);
|
||||||
|
+ tmp = g_strdup(g_getenv("TMPDIR"));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+#ifdef P_tmpdir
|
||||||
|
+ if (tmp == NULL || *tmp == '\0') {
|
||||||
|
+ gsize k;
|
||||||
|
+ g_free(tmp);
|
||||||
|
+ tmp = g_strdup(P_tmpdir);
|
||||||
|
+ k = strlen(tmp);
|
||||||
|
+ if (k > 1 && G_IS_DIR_SEPARATOR(tmp[k - 1]))
|
||||||
|
+ tmp[k - 1] = '\0';
|
||||||
|
+ }
|
||||||
|
+#endif /* P_tmpdir */
|
||||||
|
+
|
||||||
|
+ if (tmp == NULL || *tmp == '\0') {
|
||||||
|
+ g_free(tmp);
|
||||||
|
+ tmp = g_strdup("/var/tmp");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ g_once_init_leave(&tmp_dir, tmp);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return tmp_dir;
|
||||||
|
+}
|
||||||
|
diff --git a/wsutil/wstmpdir.h b/wsutil/wstmpdir.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..07ac583
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/wsutil/wstmpdir.h
|
||||||
|
@@ -0,0 +1,39 @@
|
||||||
|
+/* wstmpdir.c
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2013 Red Hat, Inc. All right reserved.
|
||||||
|
+ *
|
||||||
|
+ * Temporary directory routine
|
||||||
|
+ *
|
||||||
|
+ * This program is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License
|
||||||
|
+ * as published by the Free Software Foundation; either version 2
|
||||||
|
+ * of the License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This program is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License
|
||||||
|
+ * along with this program; if not, write to the Free Software
|
||||||
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
+ *
|
||||||
|
+ * Author: Peter Hatina <phatina@redhat.com>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#ifndef __WS_TMP_DIR_H__
|
||||||
|
+#define __WS_TMP_DIR_H__
|
||||||
|
+
|
||||||
|
+#include "ws_symbol_export.h"
|
||||||
|
+
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+extern "C" {
|
||||||
|
+#endif // __cplusplus
|
||||||
|
+
|
||||||
|
+WS_DLL_PUBLIC const char *get_tmp_dir(void);
|
||||||
|
+
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+}
|
||||||
|
+#endif // __cplusplus
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
--
|
||||||
|
2.13.0
|
||||||
|
|
33
SOURCES/wireshark-0007-cmakelists.patch
Normal file
33
SOURCES/wireshark-0007-cmakelists.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 9e3b555..b0abd84 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -3069,7 +3069,7 @@ if(RPMBUILD_EXECUTABLE AND GIT_EXECUTABLE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
- COMMAND git describe --abbrev=8 --match v[1-9]*
|
||||||
|
+ COMMAND git describe --always --abbrev=8 --match v[1-9]*
|
||||||
|
OUTPUT_VARIABLE _git_description
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt
|
||||||
|
index 0367cd1..6382a2c 100644
|
||||||
|
--- a/wsutil/CMakeLists.txt
|
||||||
|
+++ b/wsutil/CMakeLists.txt
|
||||||
|
@@ -69,6 +69,7 @@ set(WSUTIL_PUBLIC_HEADERS
|
||||||
|
ws_mempbrk_int.h
|
||||||
|
ws_pipe.h
|
||||||
|
ws_printf.h
|
||||||
|
+ wstmpdir.h
|
||||||
|
wsjsmn.h
|
||||||
|
xtea.h
|
||||||
|
)
|
||||||
|
@@ -118,6 +118,7 @@ set(WSUTIL_COMMON_FILES
|
||||||
|
unicode-utils.c
|
||||||
|
ws_mempbrk.c
|
||||||
|
ws_pipe.c
|
||||||
|
+ wstmpdir.c
|
||||||
|
wsgcrypt.c
|
||||||
|
wsjsmn.c
|
||||||
|
xtea.c
|
86
SOURCES/wireshark-0008-CVE-2018-16056.patch
Normal file
86
SOURCES/wireshark-0008-CVE-2018-16056.patch
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-btatt.c b/epan/dissectors/packet-btatt.c
|
||||||
|
index 803ed14f92..10375c0046 100644
|
||||||
|
--- a/epan/dissectors/packet-btatt.c
|
||||||
|
+++ b/epan/dissectors/packet-btatt.c
|
||||||
|
@@ -4205,6 +4205,19 @@ dissect_handle(proto_tree *tree, packet_info *pinfo, gint hf,
|
||||||
|
static gint
|
||||||
|
btatt_dissect_attribute_handle(guint16 handle, tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, btatt_data_t *att_data);
|
||||||
|
|
||||||
|
+static int
|
||||||
|
+btatt_call_dissector_by_dissector_name_with_data(const char *dissector_name,
|
||||||
|
+ tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
|
||||||
|
+{
|
||||||
|
+ dissector_handle_t handle;
|
||||||
|
+
|
||||||
|
+ handle = find_dissector(dissector_name);
|
||||||
|
+ if (handle != NULL)
|
||||||
|
+ return call_dissector_with_data(handle, tvb, pinfo, tree, data);
|
||||||
|
+ else
|
||||||
|
+ return call_data_dissector(tvb, pinfo, tree);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static gint
|
||||||
|
dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info *pinfo, tvbuff_t *old_tvb,
|
||||||
|
gint old_offset, gint length, guint16 handle, bluetooth_uuid_t uuid, btatt_data_t *att_data)
|
||||||
|
@@ -4728,7 +4741,7 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info *
|
||||||
|
proto_tree_add_item(tree, hf_btatt_value_trigger_setting_analog, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||||
|
offset += 2;
|
||||||
|
} else if (value == 4) {
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a56"), tvb_new_subset_length_caplen(tvb, offset, 1, 1), pinfo, tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a56", tvb_new_subset_length_caplen(tvb, offset, 1, 1), pinfo, tree, att_data);
|
||||||
|
offset += 1;
|
||||||
|
} else if (value == 5 || value == 6) {
|
||||||
|
proto_tree_add_item(tree, hf_btatt_value_trigger_setting_analog_one, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||||
|
@@ -6443,10 +6456,10 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info *
|
||||||
|
if (bluetooth_gatt_has_no_parameter(att_data->opcode))
|
||||||
|
break;
|
||||||
|
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a56"), tvb_new_subset_length_caplen(tvb, offset, 1, 1), pinfo, tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a56", tvb_new_subset_length_caplen(tvb, offset, 1, 1), pinfo, tree, att_data);
|
||||||
|
offset += 1;
|
||||||
|
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a58"), tvb_new_subset_length_caplen(tvb, offset, 2, 2), pinfo, tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a58", tvb_new_subset_length_caplen(tvb, offset, 2, 2), pinfo, tree, att_data);
|
||||||
|
offset += 2;
|
||||||
|
|
||||||
|
break;
|
||||||
|
@@ -6543,7 +6556,7 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info *
|
||||||
|
sub_item = proto_tree_add_item(tree, hf_btatt_plx_spot_check_measurement_timestamp, tvb, offset, 7, ENC_NA);
|
||||||
|
sub_tree = proto_item_add_subtree(sub_item, ett_btatt_value);
|
||||||
|
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a08"), tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, sub_tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a08", tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, sub_tree, att_data);
|
||||||
|
offset += 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -9116,7 +9129,7 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info *
|
||||||
|
sub_item = proto_tree_add_item(tree, hf_btatt_ots_object_first_created, tvb, offset, 7, ENC_NA);
|
||||||
|
sub_tree = proto_item_add_subtree(sub_item, ett_btatt_value);
|
||||||
|
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a08"), tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, sub_tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a08", tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, sub_tree, att_data);
|
||||||
|
offset += 7;
|
||||||
|
|
||||||
|
break;
|
||||||
|
@@ -9135,7 +9148,7 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info *
|
||||||
|
sub_item = proto_tree_add_item(tree, hf_btatt_ots_object_last_modified, tvb, offset, 7, ENC_NA);
|
||||||
|
sub_tree = proto_item_add_subtree(sub_item, ett_btatt_value);
|
||||||
|
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a08"), tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, sub_tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a08", tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, sub_tree, att_data);
|
||||||
|
offset += 7;
|
||||||
|
|
||||||
|
break;
|
||||||
|
@@ -9342,10 +9355,10 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info *
|
||||||
|
break;
|
||||||
|
case 0x06: /* Created Between */
|
||||||
|
case 0x07: /* Modified Between */
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a08"), tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a08", tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, tree, att_data);
|
||||||
|
offset += 7;
|
||||||
|
|
||||||
|
- call_dissector_with_data(find_dissector("btgatt.uuid0x2a08"), tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, tree, att_data);
|
||||||
|
+ btatt_call_dissector_by_dissector_name_with_data("btgatt.uuid0x2a08", tvb_new_subset_length_caplen(tvb, offset, 7, 7), pinfo, tree, att_data);
|
||||||
|
offset += 7;
|
||||||
|
|
||||||
|
break;
|
27
SOURCES/wireshark-0009-CVE-2018-16057.patch
Normal file
27
SOURCES/wireshark-0009-CVE-2018-16057.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-ieee80211-radiotap-iter.c b/epan/dissectors/packet-ieee80211-radiotap-iter.c
|
||||||
|
index 56ca297434..4006637fb2 100644
|
||||||
|
--- a/epan/dissectors/packet-ieee80211-radiotap-iter.c
|
||||||
|
+++ b/epan/dissectors/packet-ieee80211-radiotap-iter.c
|
||||||
|
@@ -131,6 +131,7 @@ int ieee80211_radiotap_iterator_init(
|
||||||
|
iterator->_bitmap_shifter = get_unaligned_le32(&radiotap_header->it_present);
|
||||||
|
iterator->_arg = (guint8 *)radiotap_header + sizeof(*radiotap_header);
|
||||||
|
iterator->_reset_on_ext = 0;
|
||||||
|
+ iterator->_next_ns_data = NULL;
|
||||||
|
iterator->_next_bitmap = &radiotap_header->it_present;
|
||||||
|
iterator->_next_bitmap++;
|
||||||
|
iterator->_vns = vns;
|
||||||
|
@@ -287,9 +288,14 @@ int ieee80211_radiotap_iterator_next(
|
||||||
|
}
|
||||||
|
if (!align) {
|
||||||
|
/* skip all subsequent data */
|
||||||
|
+ if (!iterator->_next_ns_data)
|
||||||
|
+ return -EINVAL;
|
||||||
|
iterator->_arg = iterator->_next_ns_data;
|
||||||
|
/* give up on this namespace */
|
||||||
|
iterator->current_namespace = NULL;
|
||||||
|
+ iterator->_next_ns_data = NULL;
|
||||||
|
+ if (!ITERATOR_VALID(iterator, 0))
|
||||||
|
+ return -EINVAL;
|
||||||
|
goto next_entry;
|
||||||
|
}
|
||||||
|
break;
|
19
SOURCES/wireshark-0010-CVE-2018-16058.patch
Normal file
19
SOURCES/wireshark-0010-CVE-2018-16058.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-btavdtp.c b/epan/dissectors/packet-btavdtp.c
|
||||||
|
index a0df20a2de..4078228177 100644
|
||||||
|
--- a/epan/dissectors/packet-btavdtp.c
|
||||||
|
+++ b/epan/dissectors/packet-btavdtp.c
|
||||||
|
@@ -719,13 +719,11 @@ dissect_sep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset,
|
||||||
|
key[6].length = 0;
|
||||||
|
key[6].key = NULL;
|
||||||
|
|
||||||
|
- sep_data = wmem_new(wmem_file_scope(), sep_entry_t);
|
||||||
|
+ sep_data = wmem_new0(wmem_file_scope(), sep_entry_t);
|
||||||
|
sep_data->seid = seid;
|
||||||
|
sep_data->type = type;
|
||||||
|
sep_data->media_type = media_type;
|
||||||
|
- sep_data->int_seid = 0;
|
||||||
|
sep_data->codec = -1;
|
||||||
|
- sep_data->content_protection_type = 0;
|
||||||
|
if (in_use) {
|
||||||
|
sep_data->state = SEP_STATE_IN_USE;
|
||||||
|
} else {
|
170
SOURCES/wireshark-0011-tshark-missing-N-option.patch
Normal file
170
SOURCES/wireshark-0011-tshark-missing-N-option.patch
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
From 8dfaa8fa7c97cd1372a0a233b83fbc7945447b75 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Uli Heilmeier <uh@heilmeier.eu>
|
||||||
|
Date: Fri, 05 Oct 2018 08:54:55 +0200
|
||||||
|
Subject: [PATCH] *shark: Update help and manpage for name resolving
|
||||||
|
|
||||||
|
Add 'v' option for VLAN ID resolving and get rid of
|
||||||
|
deprecated 'C' option.
|
||||||
|
|
||||||
|
Bug: 14826
|
||||||
|
Change-Id: I63104f4a465d251048693ad02882ea7eb2c4d926
|
||||||
|
Reviewed-on: https://code.wireshark.org/review/30029
|
||||||
|
Petri-Dish: Anders Broman <a.broman58@gmail.com>
|
||||||
|
Tested-by: Petri Dish Buildbot
|
||||||
|
Reviewed-by: Anders Broman <a.broman58@gmail.com>
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/doc/rawshark.pod b/doc/rawshark.pod
|
||||||
|
index be6caee..8f10445 100644
|
||||||
|
--- a/doc/rawshark.pod
|
||||||
|
+++ b/doc/rawshark.pod
|
||||||
|
@@ -183,6 +183,8 @@
|
||||||
|
|
||||||
|
B<d> to enable resolution from captured DNS packets
|
||||||
|
|
||||||
|
+B<v> to enable VLAN IDs to names resolution
|
||||||
|
+
|
||||||
|
=item -o E<lt>preferenceE<gt>:E<lt>valueE<gt>
|
||||||
|
|
||||||
|
Set a preference value, overriding the default value and any value read
|
||||||
|
diff --git a/doc/tshark.pod b/doc/tshark.pod
|
||||||
|
index 263332b..8aff736 100644
|
||||||
|
--- a/doc/tshark.pod
|
||||||
|
+++ b/doc/tshark.pod
|
||||||
|
@@ -676,6 +676,8 @@
|
||||||
|
|
||||||
|
B<t> to enable transport-layer port number resolution
|
||||||
|
|
||||||
|
+B<v> to enable VLAN IDs to names resolution
|
||||||
|
+
|
||||||
|
=item -o E<lt>preferenceE<gt>:E<lt>valueE<gt>
|
||||||
|
|
||||||
|
Set a preference value, overriding the default value and any value read
|
||||||
|
diff --git a/doc/wireshark.pod.template b/doc/wireshark.pod.template
|
||||||
|
index a25ea65..c45581f 100644
|
||||||
|
--- a/doc/wireshark.pod.template
|
||||||
|
+++ b/doc/wireshark.pod.template
|
||||||
|
@@ -499,6 +499,8 @@
|
||||||
|
|
||||||
|
B<d> to enable resolution from captured DNS packets
|
||||||
|
|
||||||
|
+B<v> to enable VLAN IDs to names resolution
|
||||||
|
+
|
||||||
|
=item -o E<lt>preference/recent settingE<gt>
|
||||||
|
|
||||||
|
Set a preference or recent value, overriding the default value and any value
|
||||||
|
diff --git a/docbook/wsug_src/WSUG_chapter_customize.asciidoc b/docbook/wsug_src/WSUG_chapter_customize.asciidoc
|
||||||
|
index 67afafc..a7411c4 100644
|
||||||
|
--- a/docbook/wsug_src/WSUG_chapter_customize.asciidoc
|
||||||
|
+++ b/docbook/wsug_src/WSUG_chapter_customize.asciidoc
|
||||||
|
@@ -76,7 +76,7 @@
|
||||||
|
Processing:
|
||||||
|
-R <read filter> packet filter in Wireshark display filter syntax
|
||||||
|
-n disable all name resolutions (def: all enabled)
|
||||||
|
- -N <name resolve flags> enable specific name resolution(s): "mnNtCd"
|
||||||
|
+ -N <name resolve flags> enable specific name resolution(s): "mnNtdv"
|
||||||
|
-d <layer_type>==<selector>,<decode_as_protocol> ...
|
||||||
|
"Decode As”, see the man page for details
|
||||||
|
Example: tcp.port==8888,http
|
||||||
|
@@ -295,6 +295,7 @@
|
||||||
|
resolution, `n` to enable network address resolution, and `t` to enable
|
||||||
|
transport-layer port number resolution. This overrides `-n` if both `-N` and
|
||||||
|
`-n` are present. The letter `d` enables resolution from captured DNS packets.
|
||||||
|
+The letter `v` enables resolution from VLAN IDs to names.
|
||||||
|
|
||||||
|
-o <preference or recent settings>::
|
||||||
|
|
||||||
|
diff --git a/docbook/wsug_src/rawshark-h.txt b/docbook/wsug_src/rawshark-h.txt
|
||||||
|
index 39aeec0..7de64ec 100644
|
||||||
|
--- a/docbook/wsug_src/rawshark-h.txt
|
||||||
|
+++ b/docbook/wsug_src/rawshark-h.txt
|
||||||
|
@@ -13,7 +13,7 @@
|
||||||
|
-F <field> field to display
|
||||||
|
-m virtual memory limit, in bytes
|
||||||
|
-n disable all name resolution (def: all enabled)
|
||||||
|
- -N <name resolve flags> enable specific name resolution(s): "mnNtd"
|
||||||
|
+ -N <name resolve flags> enable specific name resolution(s): "mnNtdv"
|
||||||
|
-p use the system's packet header format
|
||||||
|
(which may have 64-bit timestamps)
|
||||||
|
-R <read filter> packet filter in Wireshark display filter syntax
|
||||||
|
diff --git a/docbook/wsug_src/tshark-h.txt b/docbook/wsug_src/tshark-h.txt
|
||||||
|
index 9eaccda..ffe12b9 100644
|
||||||
|
--- a/docbook/wsug_src/tshark-h.txt
|
||||||
|
+++ b/docbook/wsug_src/tshark-h.txt
|
||||||
|
@@ -38,7 +38,7 @@
|
||||||
|
-Y <display filter> packet displaY filter in Wireshark display filter
|
||||||
|
syntax
|
||||||
|
-n disable all name resolutions (def: all enabled)
|
||||||
|
- -N <name resolve flags> enable specific name resolution(s): "mnNtCd"
|
||||||
|
+ -N <name resolve flags> enable specific name resolution(s): "mnNtdv"
|
||||||
|
-d <layer_type>==<selector>,<decode_as_protocol> ...
|
||||||
|
"Decode As", see the man page for details
|
||||||
|
Example: tcp.port==8888,http
|
||||||
|
diff --git a/epan/prefs.c b/epan/prefs.c
|
||||||
|
index 34c05d3..d732eb2 100644
|
||||||
|
--- a/epan/prefs.c
|
||||||
|
+++ b/epan/prefs.c
|
||||||
|
@@ -4932,10 +4932,6 @@
|
||||||
|
case 't':
|
||||||
|
name_resolve->transport_name = TRUE;
|
||||||
|
break;
|
||||||
|
- case 'C':
|
||||||
|
- /* DEPRECATED */
|
||||||
|
- /* name_resolve->concurrent_dns */
|
||||||
|
- break;
|
||||||
|
case 'd':
|
||||||
|
name_resolve->dns_pkt_addr_resolution = TRUE;
|
||||||
|
break;
|
||||||
|
diff --git a/rawshark.c b/rawshark.c
|
||||||
|
index 61875c1..29cb2ba 100644
|
||||||
|
--- a/rawshark.c
|
||||||
|
+++ b/rawshark.c
|
||||||
|
@@ -190,7 +190,7 @@
|
||||||
|
fprintf(output, " -m virtual memory limit, in bytes\n");
|
||||||
|
#endif
|
||||||
|
fprintf(output, " -n disable all name resolution (def: all enabled)\n");
|
||||||
|
- fprintf(output, " -N <name resolve flags> enable specific name resolution(s): \"mnNtd\"\n");
|
||||||
|
+ fprintf(output, " -N <name resolve flags> enable specific name resolution(s): \"mnNtdv\"\n");
|
||||||
|
fprintf(output, " -p use the system's packet header format\n");
|
||||||
|
fprintf(output, " (which may have 64-bit timestamps)\n");
|
||||||
|
fprintf(output, " -R <read filter> packet filter in Wireshark display filter syntax\n");
|
||||||
|
diff --git a/tshark.c b/tshark.c
|
||||||
|
index a152c2b..2d84153 100644
|
||||||
|
--- a/tshark.c
|
||||||
|
+++ b/tshark.c
|
||||||
|
@@ -370,7 +370,7 @@
|
||||||
|
fprintf(output, " -Y <display filter> packet displaY filter in Wireshark display filter\n");
|
||||||
|
fprintf(output, " syntax\n");
|
||||||
|
fprintf(output, " -n disable all name resolutions (def: all enabled)\n");
|
||||||
|
- fprintf(output, " -N <name resolve flags> enable specific name resolution(s): \"mnNtCd\"\n");
|
||||||
|
+ fprintf(output, " -N <name resolve flags> enable specific name resolution(s): \"mnNtdv\"\n");
|
||||||
|
fprintf(output, " -d %s ...\n", DECODE_AS_ARG_TEMPLATE);
|
||||||
|
fprintf(output, " \"Decode As\", see the man page for details\n");
|
||||||
|
fprintf(output, " Example: tcp.port==8888,http\n");
|
||||||
|
diff --git a/ui/commandline.c b/ui/commandline.c
|
||||||
|
index 6a26be3..7c0768a 100644
|
||||||
|
--- a/ui/commandline.c
|
||||||
|
+++ b/ui/commandline.c
|
||||||
|
@@ -123,7 +123,7 @@
|
||||||
|
fprintf(output, "Processing:\n");
|
||||||
|
fprintf(output, " -R <read filter> packet filter in Wireshark display filter syntax\n");
|
||||||
|
fprintf(output, " -n disable all name resolutions (def: all enabled)\n");
|
||||||
|
- fprintf(output, " -N <name resolve flags> enable specific name resolution(s): \"mnNtd\"\n");
|
||||||
|
+ fprintf(output, " -N <name resolve flags> enable specific name resolution(s): \"mnNtdv\"\n");
|
||||||
|
fprintf(output, " -d %s ...\n", DECODE_AS_ARG_TEMPLATE);
|
||||||
|
fprintf(output, " \"Decode As\", see the man page for details\n");
|
||||||
|
fprintf(output, " Example: tcp.port==8888,http\n");
|
||||||
|
diff --git a/ui/dissect_opts.c b/ui/dissect_opts.c
|
||||||
|
index 77e7b58..c6aa771 100644
|
||||||
|
--- a/ui/dissect_opts.c
|
||||||
|
+++ b/ui/dissect_opts.c
|
||||||
|
@@ -79,7 +79,8 @@
|
||||||
|
"\t'n' to enable network address resolution\n"
|
||||||
|
"\t'N' to enable using external resolvers (e.g., DNS)\n"
|
||||||
|
"\t for network address resolution\n"
|
||||||
|
- "\t't' to enable transport-layer port number resolution");
|
||||||
|
+ "\t't' to enable transport-layer port number resolution\n"
|
||||||
|
+ "\t'v' to enable VLAN IDs to names resolution");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
break;
|
109
SOURCES/wireshark-0012-CVE-12086.patch
Normal file
109
SOURCES/wireshark-0012-CVE-12086.patch
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
diff --git a/plugins/epan/opcua/opcua.c b/plugins/epan/opcua/opcua.c
|
||||||
|
index fc26d9f30d..4ca68a9e83 100644
|
||||||
|
--- a/plugins/epan/opcua/opcua.c
|
||||||
|
+++ b/plugins/epan/opcua/opcua.c
|
||||||
|
@@ -38,7 +38,7 @@ void proto_reg_handoff_opcua(void);
|
||||||
|
/* declare parse function pointer */
|
||||||
|
typedef int (*FctParse)(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset);
|
||||||
|
|
||||||
|
-static int proto_opcua = -1;
|
||||||
|
+int proto_opcua = -1;
|
||||||
|
static dissector_handle_t opcua_handle;
|
||||||
|
/** Official IANA registered port for OPC UA Binary Protocol. */
|
||||||
|
#define OPCUA_PORT_RANGE "4840"
|
||||||
|
diff --git a/plugins/epan/opcua/opcua_simpletypes.c b/plugins/epan/opcua/opcua_simpletypes.c
|
||||||
|
index a787f21c35..ab006b7552 100644
|
||||||
|
--- a/plugins/epan/opcua/opcua_simpletypes.c
|
||||||
|
+++ b/plugins/epan/opcua/opcua_simpletypes.c
|
||||||
|
@@ -20,6 +20,7 @@
|
||||||
|
#include <epan/packet.h>
|
||||||
|
#include <epan/expert.h>
|
||||||
|
#include <epan/dissectors/packet-windows-common.h>
|
||||||
|
+#include <epan/proto_data.h>
|
||||||
|
#include "opcua_simpletypes.h"
|
||||||
|
#include "opcua_hfindeces.h"
|
||||||
|
#include "opcua_statuscode.h"
|
||||||
|
@@ -80,6 +81,7 @@
|
||||||
|
|
||||||
|
/* Chosen arbitrarily */
|
||||||
|
#define MAX_ARRAY_LEN 10000
|
||||||
|
+#define MAX_NESTING_DEPTH 100
|
||||||
|
|
||||||
|
static int hf_opcua_diag_mask = -1;
|
||||||
|
static int hf_opcua_diag_mask_symbolicflag = -1;
|
||||||
|
@@ -168,6 +170,9 @@ int hf_opcua_resultMask_displayname = -1;
|
||||||
|
int hf_opcua_resultMask_typedefinition = -1;
|
||||||
|
|
||||||
|
static expert_field ei_array_length = EI_INIT;
|
||||||
|
+static expert_field ei_nesting_depth = EI_INIT;
|
||||||
|
+
|
||||||
|
+extern int proto_opcua;
|
||||||
|
|
||||||
|
/** NodeId encoding mask table */
|
||||||
|
static const value_string g_nodeidmasks[] = {
|
||||||
|
@@ -526,6 +531,7 @@ void registerSimpleTypes(int proto)
|
||||||
|
|
||||||
|
static ei_register_info ei[] = {
|
||||||
|
{ &ei_array_length, { "opcua.array.length", PI_UNDECODED, PI_ERROR, "Max array length exceeded", EXPFILL }},
|
||||||
|
+ { &ei_nesting_depth, { "opcua.nestingdepth", PI_UNDECODED, PI_ERROR, "Max nesting depth exceeded", EXPFILL }},
|
||||||
|
};
|
||||||
|
|
||||||
|
proto_register_field_array(proto, hf, array_length(hf));
|
||||||
|
@@ -802,9 +808,19 @@ void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gi
|
||||||
|
guint8 EncodingMask;
|
||||||
|
proto_tree *subtree;
|
||||||
|
proto_item *ti;
|
||||||
|
+ guint opcua_nested_count;
|
||||||
|
|
||||||
|
subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_diagnosticinfo, &ti, "%s: DiagnosticInfo", szFieldName);
|
||||||
|
|
||||||
|
+ /* prevent a too high nesting depth */
|
||||||
|
+ opcua_nested_count = GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, proto_opcua, 0));
|
||||||
|
+ if (++opcua_nested_count > MAX_NESTING_DEPTH)
|
||||||
|
+ {
|
||||||
|
+ expert_add_info(pinfo, ti, &ei_nesting_depth);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ p_add_proto_data(pinfo->pool, pinfo, proto_opcua, 0, GUINT_TO_POINTER(opcua_nested_count));
|
||||||
|
+
|
||||||
|
/* parse encoding mask */
|
||||||
|
EncodingMask = tvb_get_guint8(tvb, iOffset);
|
||||||
|
proto_tree_add_bitmask(subtree, tvb, iOffset, hf_opcua_diag_mask, ett_opcua_diagnosticinfo_encodingmask, diag_mask, ENC_LITTLE_ENDIAN);
|
||||||
|
@@ -912,6 +928,16 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOf
|
||||||
|
gint iOffset = *pOffset;
|
||||||
|
guint8 EncodingMask;
|
||||||
|
gint32 ArrayDimensions = 0;
|
||||||
|
+ guint opcua_nested_count;
|
||||||
|
+
|
||||||
|
+ /* prevent a too high nesting depth */
|
||||||
|
+ opcua_nested_count = GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, proto_opcua, 0));
|
||||||
|
+ if (++opcua_nested_count > MAX_NESTING_DEPTH)
|
||||||
|
+ {
|
||||||
|
+ expert_add_info(pinfo, ti, &ei_nesting_depth);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ p_add_proto_data(pinfo->pool, pinfo, proto_opcua, 0, GUINT_TO_POINTER(opcua_nested_count));
|
||||||
|
|
||||||
|
EncodingMask = tvb_get_guint8(tvb, iOffset);
|
||||||
|
proto_tree_add_item(subtree, hf_opcua_variant_encodingmask, tvb, iOffset, 1, ENC_LITTLE_ENDIAN);
|
||||||
|
@@ -1167,10 +1193,20 @@ void parseExtensionObject(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, g
|
||||||
|
guint32 TypeId;
|
||||||
|
proto_tree *extobj_tree;
|
||||||
|
proto_item *ti;
|
||||||
|
+ guint opcua_nested_count;
|
||||||
|
|
||||||
|
/* add extension object subtree */
|
||||||
|
extobj_tree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_extensionobject, &ti, "%s: ExtensionObject", szFieldName);
|
||||||
|
|
||||||
|
+ /* prevent a too high nesting depth */
|
||||||
|
+ opcua_nested_count = GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, proto_opcua, 0));
|
||||||
|
+ if (++opcua_nested_count > MAX_NESTING_DEPTH)
|
||||||
|
+ {
|
||||||
|
+ expert_add_info(pinfo, ti, &ei_nesting_depth);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ p_add_proto_data(pinfo->pool, pinfo, proto_opcua, 0, GUINT_TO_POINTER(opcua_nested_count));
|
||||||
|
+
|
||||||
|
/* add nodeid subtree */
|
||||||
|
TypeId = getExtensionObjectType(tvb, &iOffset);
|
||||||
|
parseExpandedNodeId(extobj_tree, tvb, pinfo, &iOffset, "TypeId");
|
31
SOURCES/wireshark-0013-CVE-18225.patch
Normal file
31
SOURCES/wireshark-0013-CVE-18225.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-coap.c b/epan/dissectors/packet-coap.c
|
||||||
|
index b37b6c231c..b7afe05f82 100644
|
||||||
|
--- a/epan/dissectors/packet-coap.c
|
||||||
|
+++ b/epan/dissectors/packet-coap.c
|
||||||
|
@@ -450,8 +450,11 @@ dissect_coap_opt_object_security(tvbuff_t *tvb, proto_item *head_item, proto_tre
|
||||||
|
coinfo->object_security = TRUE;
|
||||||
|
|
||||||
|
coinfo->oscore_info->piv = NULL;
|
||||||
|
+ coinfo->oscore_info->piv_len = 0;
|
||||||
|
coinfo->oscore_info->kid_context = NULL;
|
||||||
|
+ coinfo->oscore_info->kid_context_len = 0;
|
||||||
|
coinfo->oscore_info->kid = NULL;
|
||||||
|
+ coinfo->oscore_info->kid_len = 0;
|
||||||
|
|
||||||
|
if (opt_length == 0) { /* option length is zero, means flag byte is 0x00*/
|
||||||
|
/* add info to the head of the packet detail */
|
||||||
|
@@ -1144,11 +1147,9 @@ dissect_coap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* d
|
||||||
|
/* Indicate to OSCORE that this response contains its own PIV */
|
||||||
|
coinfo->oscore_info->piv_in_response = TRUE;
|
||||||
|
coap_trans->oscore_info->piv_in_response = TRUE;
|
||||||
|
- } else {
|
||||||
|
- if (coap_trans->oscore_info->piv) {
|
||||||
|
- /* Use the PIV from the request */
|
||||||
|
- coinfo->oscore_info->piv = (guint8 *) wmem_memdup(wmem_packet_scope(), coap_trans->oscore_info->piv, coap_trans->oscore_info->piv_len);
|
||||||
|
- }
|
||||||
|
+ } else if (coap_trans->oscore_info->piv_len > 0) {
|
||||||
|
+ /* Use the PIV from the request */
|
||||||
|
+ coinfo->oscore_info->piv = (guint8 *) wmem_memdup(wmem_packet_scope(), coap_trans->oscore_info->piv, coap_trans->oscore_info->piv_len);
|
||||||
|
coinfo->oscore_info->piv_len = coap_trans->oscore_info->piv_len;
|
||||||
|
}
|
||||||
|
coinfo->oscore_info->response = TRUE;
|
57
SOURCES/wireshark-0014-CVE-18226.patch
Normal file
57
SOURCES/wireshark-0014-CVE-18226.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-steam-ihs-discovery.c b/epan/dissectors/packet-steam-ihs-discovery.c
|
||||||
|
index 1bec81e594..9d238f4e88 100644
|
||||||
|
--- a/epan/dissectors/packet-steam-ihs-discovery.c
|
||||||
|
+++ b/epan/dissectors/packet-steam-ihs-discovery.c
|
||||||
|
@@ -491,9 +491,7 @@ steamdiscover_dissect_body_status(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
protobuf_desc_t pb = { tvb, offset, bytes_left };
|
||||||
|
protobuf_desc_t pb2 = { tvb, 0, 0 };
|
||||||
|
protobuf_tag_t tag = { 0, 0, 0 };
|
||||||
|
- wmem_allocator_t* strpool;
|
||||||
|
guint8 *hostname;
|
||||||
|
- strpool = wmem_allocator_new(WMEM_ALLOCATOR_SIMPLE);
|
||||||
|
nstime_t timestamp;
|
||||||
|
proto_tree *user_tree;
|
||||||
|
proto_item *user_it;
|
||||||
|
@@ -522,7 +520,7 @@ steamdiscover_dissect_body_status(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
value = get_varint64(pb.tvb, pb.offset, pb.bytes_left, &len);
|
||||||
|
proto_tree_add_item(tree, hf_steam_ihs_discovery_body_status_hostname, pb.tvb,
|
||||||
|
pb.offset+len, (gint)value, ENC_UTF_8|ENC_NA);
|
||||||
|
- hostname = tvb_get_string_enc(strpool, pb.tvb, pb.offset+len, (gint)value, ENC_UTF_8);
|
||||||
|
+ hostname = tvb_get_string_enc(wmem_packet_scope(), pb.tvb, pb.offset+len, (gint)value, ENC_UTF_8);
|
||||||
|
if(hostname && strlen(hostname)) {
|
||||||
|
col_add_fstr(pinfo->cinfo, COL_INFO, "%s from %s", hf_steam_ihs_discovery_header_msgtype_strings[STEAMDISCOVER_MSGTYPE_CLIENTBROADCASTMSGSTATUS].strptr, hostname);
|
||||||
|
}
|
||||||
|
@@ -615,7 +613,6 @@ steamdiscover_dissect_body_status(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
}
|
||||||
|
protobuf_seek_forward(&pb, len);
|
||||||
|
}
|
||||||
|
- wmem_destroy_allocator(strpool);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dissect a CMsgRemoteDeviceAuthorizationRequest protobuf message body.
|
||||||
|
@@ -648,8 +645,6 @@ steamdiscover_dissect_body_authrequest(tvbuff_t *tvb, packet_info *pinfo, proto_
|
||||||
|
gint64 value;
|
||||||
|
protobuf_desc_t pb = { tvb, offset, bytes_left };
|
||||||
|
protobuf_tag_t tag = { 0, 0, 0 };
|
||||||
|
- wmem_allocator_t *strpool;
|
||||||
|
- strpool = wmem_allocator_new(WMEM_ALLOCATOR_SIMPLE);
|
||||||
|
guint8* devicename;
|
||||||
|
while (protobuf_iter_next(&pb, &tag)) {
|
||||||
|
switch(tag.field_number) {
|
||||||
|
@@ -665,7 +660,7 @@ steamdiscover_dissect_body_authrequest(tvbuff_t *tvb, packet_info *pinfo, proto_
|
||||||
|
value = get_varint64(pb.tvb, pb.offset, pb.bytes_left, &len);
|
||||||
|
proto_tree_add_item(tree, hf_steam_ihs_discovery_body_authrequest_devicename, pb.tvb,
|
||||||
|
pb.offset+len, (gint)value, ENC_UTF_8|ENC_NA);
|
||||||
|
- devicename = tvb_get_string_enc(strpool, pb.tvb, pb.offset+len, (gint)value, ENC_UTF_8);
|
||||||
|
+ devicename = tvb_get_string_enc(wmem_packet_scope(), pb.tvb, pb.offset+len, (gint)value, ENC_UTF_8);
|
||||||
|
if (devicename && strlen(devicename)) {
|
||||||
|
col_append_fstr(pinfo->cinfo, COL_INFO, " from %s", devicename);
|
||||||
|
}
|
||||||
|
@@ -684,7 +679,6 @@ steamdiscover_dissect_body_authrequest(tvbuff_t *tvb, packet_info *pinfo, proto_
|
||||||
|
}
|
||||||
|
protobuf_seek_forward(&pb, len);
|
||||||
|
}
|
||||||
|
- wmem_destroy_allocator(strpool);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dissect a CMsgRemoteDeviceAuthorizationResponse protobuf message body.
|
725
SOURCES/wireshark-0015-CVE-18227.patch
Normal file
725
SOURCES/wireshark-0015-CVE-18227.patch
Normal file
@ -0,0 +1,725 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-mswsp.c b/epan/dissectors/packet-mswsp.c
|
||||||
|
index 421713067b..295192a0ab 100644
|
||||||
|
--- a/epan/dissectors/packet-mswsp.c
|
||||||
|
+++ b/epan/dissectors/packet-mswsp.c
|
||||||
|
@@ -359,6 +359,7 @@ static int SMB2 = 2;
|
||||||
|
|
||||||
|
void proto_reg_handoff_mswsp(void);
|
||||||
|
|
||||||
|
+static expert_field ei_mswsp_invalid_variant_type = EI_INIT;
|
||||||
|
static expert_field ei_missing_msg_context = EI_INIT;
|
||||||
|
static expert_field ei_mswsp_msg_cpmsetbinding_ccolumns = EI_INIT;
|
||||||
|
|
||||||
|
@@ -3068,7 +3069,7 @@ static int parse_lcid(tvbuff_t *tvb, int offset, proto_tree *parent_tree, const
|
||||||
|
|
||||||
|
/*****************************************************************************************/
|
||||||
|
/* 2.2.1.1 CBaseStorageVariant */
|
||||||
|
-static int parse_CBaseStorageVariant(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CBaseStorageVariant *value, const char *text);
|
||||||
|
+static int parse_CBaseStorageVariant(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CBaseStorageVariant *value, const char *text);
|
||||||
|
|
||||||
|
/* 2.2.1.2 CFullPropSpec */
|
||||||
|
static int parse_CFullPropSpec(tvbuff_t *tvb, int offset, proto_tree *tree, proto_tree *pad_tree, struct CFullPropSpec *v, const char *fmt, ...);
|
||||||
|
@@ -3080,10 +3081,10 @@ static int parse_CContentRestriction(tvbuff_t *tvb, int offset, proto_tree *pare
|
||||||
|
static int parse_CNatLanguageRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CNatLanguageRestriction *v, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.6 CNodeRestriction */
|
||||||
|
-static int parse_CNodeRestriction(tvbuff_t *tvb, int offset, proto_tree *tree, proto_tree *pad_tree, struct CNodeRestriction *v, const char* fmt, ...);
|
||||||
|
+static int parse_CNodeRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, proto_tree *pad_tree, struct CNodeRestriction *v, const char* fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.7 CPropertyRestriction */
|
||||||
|
-static int parse_CPropertyRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CPropertyRestriction *v, const char *fmt, ...);
|
||||||
|
+static int parse_CPropertyRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CPropertyRestriction *v, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.8 CReuseWhere */
|
||||||
|
static int parse_CReuseWhere(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, struct CReuseWhere *v, const char *fmt, ...);
|
||||||
|
@@ -3092,27 +3093,27 @@ static int parse_CReuseWhere(tvbuff_t *tvb, int offset, proto_tree *parent_tree,
|
||||||
|
static int parse_CSort(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.12 CCoercionRestriction */
|
||||||
|
-static int parse_CCoercionRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CCoercionRestriction *v, const char *fmt, ...);
|
||||||
|
+static int parse_CCoercionRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CCoercionRestriction *v, const char *fmt, ...);
|
||||||
|
/* 2.2.1.16 CRestrictionArray */
|
||||||
|
-static int parse_CRestrictionArray(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_CRestrictionArray(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.17 CRestriction */
|
||||||
|
-static int parse_CRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CRestriction *v, const char *fmt, ...);
|
||||||
|
+static int parse_CRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CRestriction *v, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.18 CColumnSet */
|
||||||
|
static int parse_CColumnSet(tvbuff_t *tvb, int offset, proto_tree *tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.20 CCategorizationSpec */
|
||||||
|
-static int parse_CCategorizationSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_CCategorizationSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.21 CCategSpec */
|
||||||
|
-static int parse_CCategSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_CCategSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.22 CRangeCategSpec */
|
||||||
|
-static int parse_CRangeCategSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_CRangeCategSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.23 RANGEBOUNDARY */
|
||||||
|
-static int parse_RANGEBOUNDARY(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_RANGEBOUNDARY(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.24 CAggregSet */
|
||||||
|
static int parse_CAggregSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
@@ -3127,19 +3128,19 @@ static int parse_CSortAggregSet(tvbuff_t *tvb, int offset, proto_tree *parent_tr
|
||||||
|
static int parse_CAggregSortKey(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.28 CInGroupSortAggregSets */
|
||||||
|
-static int parse_CInGroupSortAggregSets(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_CInGroupSortAggregSets(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.29 CInGroupSortAggregSet */
|
||||||
|
-static int parse_CInGroupSortAggregSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_CInGroupSortAggregSet(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.30 CDbColId */
|
||||||
|
static int parse_CDbColId(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *text);
|
||||||
|
|
||||||
|
/* 2.2.1.31 CDbProp */
|
||||||
|
-static int parse_CDbProp(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct GuidPropertySet *propset, const char *fmt, ...);
|
||||||
|
+static int parse_CDbProp(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct GuidPropertySet *propset, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.32 CDbPropSet */
|
||||||
|
-static int parse_CDbPropSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
+static int parse_CDbPropSet(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.33 CPidMapper */
|
||||||
|
static int parse_CPidMapper(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
@@ -3157,7 +3158,7 @@ static int parse_CRowsetProperties(tvbuff_t *tvb, int offset, proto_tree *parent
|
||||||
|
static int parse_CSortSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...);
|
||||||
|
|
||||||
|
/* 2.2.1.44 CTableColumn */
|
||||||
|
-static int parse_CTableColumn(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CTableColumn *col, const char *fmt, ...);
|
||||||
|
+static int parse_CTableColumn(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CTableColumn *col, const char *fmt, ...);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -3231,11 +3232,11 @@ static int parse_CSortSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree, pr
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_CTableColumn(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CTableColumn *col, const char *fmt, ...)
|
||||||
|
+static int parse_CTableColumn(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CTableColumn *col, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
- proto_item *item;
|
||||||
|
+ proto_item *item, *ti_type;
|
||||||
|
proto_tree *tree;
|
||||||
|
va_list ap;
|
||||||
|
struct vtype_data *type;
|
||||||
|
@@ -3266,8 +3267,14 @@ static int parse_CTableColumn(tvbuff_t *tvb, int offset, proto_tree *parent_tree
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type = vType_get_type(vtype_val);
|
||||||
|
- DISSECTOR_ASSERT(type != NULL);
|
||||||
|
- proto_tree_add_string_format_value(tree, hf_mswsp_ctablecolumn_vtype, tvb, offset, 4, type->str, "%s%s", type->str, modifier);
|
||||||
|
+ if (type == NULL) {
|
||||||
|
+ /*
|
||||||
|
+ * Not a valid type.
|
||||||
|
+ */
|
||||||
|
+ ti_type = proto_tree_add_string(tree, hf_mswsp_ctablecolumn_vtype, tvb, offset, 4, "Unknown CTableColumn type");
|
||||||
|
+ expert_add_info(pinfo, ti_type, &ei_mswsp_invalid_variant_type);
|
||||||
|
+ } else
|
||||||
|
+ proto_tree_add_string_format_value(tree, hf_mswsp_ctablecolumn_vtype, tvb, offset, 4, type->str, "%s%s", type->str, modifier);
|
||||||
|
offset += 4;
|
||||||
|
|
||||||
|
used = tvb_get_guint8(tvb, offset);
|
||||||
|
@@ -3487,7 +3494,7 @@ static int parse_relop(tvbuff_t *tvb, int offset, proto_tree *tree, guint32 *re
|
||||||
|
}
|
||||||
|
return offset + 4;
|
||||||
|
}
|
||||||
|
-static int parse_CPropertyRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CPropertyRestriction *v, const char *fmt, ...)
|
||||||
|
+static int parse_CPropertyRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CPropertyRestriction *v, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_tree *tree;
|
||||||
|
proto_item *item;
|
||||||
|
@@ -3505,7 +3512,7 @@ static int parse_CPropertyRestriction(tvbuff_t *tvb, int offset, proto_tree *par
|
||||||
|
|
||||||
|
offset = parse_CFullPropSpec(tvb, offset, tree, pad_tree, &v->property, "Property");
|
||||||
|
|
||||||
|
- offset = parse_CBaseStorageVariant(tvb, offset, tree, pad_tree, &v->prval, "prval");
|
||||||
|
+ offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &v->prval, "prval");
|
||||||
|
|
||||||
|
offset = parse_padding(tvb, offset, 4, pad_tree, "padding_lcid");
|
||||||
|
|
||||||
|
@@ -3517,7 +3524,7 @@ static int parse_CPropertyRestriction(tvbuff_t *tvb, int offset, proto_tree *par
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_CCoercionRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CCoercionRestriction *v, const char *fmt, ...)
|
||||||
|
+static int parse_CCoercionRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CCoercionRestriction *v, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_tree *tree;
|
||||||
|
proto_item *item;
|
||||||
|
@@ -3535,7 +3542,7 @@ static int parse_CCoercionRestriction(tvbuff_t *tvb, int offset, proto_tree *par
|
||||||
|
|
||||||
|
offset += 4;
|
||||||
|
|
||||||
|
- offset = parse_CRestriction(tvb, offset, tree, pad_tree, &v->child, "child");
|
||||||
|
+ offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree, &v->child, "child");
|
||||||
|
|
||||||
|
proto_item_set_end(item, tvb, offset);
|
||||||
|
return offset;
|
||||||
|
@@ -3732,7 +3739,7 @@ static int parse_rType(tvbuff_t *tvb, int offset, proto_tree *tree, enum rType *
|
||||||
|
return offset + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_CRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CRestriction *v, const char *fmt, ...)
|
||||||
|
+static int parse_CRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CRestriction *v, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_tree *tree;
|
||||||
|
proto_item *item;
|
||||||
|
@@ -3761,18 +3768,18 @@ static int parse_CRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree
|
||||||
|
case RTProximity:
|
||||||
|
case RTPhrase: {
|
||||||
|
v->u.RTAnd = EP_ALLOC(struct CNodeRestriction);
|
||||||
|
- offset = parse_CNodeRestriction(tvb, offset, tree, pad_tree, v->u.RTAnd, "CNodeRestriction");
|
||||||
|
+ offset = parse_CNodeRestriction(tvb, pinfo, offset, tree, pad_tree, v->u.RTAnd, "CNodeRestriction");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RTNot: {
|
||||||
|
v->u.RTNot = EP_ALLOC(struct CRestriction);
|
||||||
|
- offset = parse_CRestriction(tvb, offset, tree, pad_tree,
|
||||||
|
+ offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree,
|
||||||
|
v->u.RTNot, "CRestriction");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RTProperty: {
|
||||||
|
v->u.RTProperty = EP_ALLOC(struct CPropertyRestriction);
|
||||||
|
- offset = parse_CPropertyRestriction(tvb, offset, tree, pad_tree,
|
||||||
|
+ offset = parse_CPropertyRestriction(tvb, pinfo, offset, tree, pad_tree,
|
||||||
|
v->u.RTProperty, "CPropertyRestriction");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -3780,7 +3787,7 @@ static int parse_CRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree
|
||||||
|
case RTCoerce_Multiply:
|
||||||
|
case RTCoerce_Absolute: {
|
||||||
|
v->u.RTCoerce_Add = EP_ALLOC(struct CCoercionRestriction);
|
||||||
|
- offset = parse_CCoercionRestriction(tvb, offset, tree, pad_tree,
|
||||||
|
+ offset = parse_CCoercionRestriction(tvb, pinfo, offset, tree, pad_tree,
|
||||||
|
v->u.RTCoerce_Add, "CCoercionRestriction");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -3810,7 +3817,7 @@ static int parse_CRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_CRestrictionArray(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+static int parse_CRestrictionArray(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
guint8 present, count;
|
||||||
|
|
||||||
|
@@ -3840,14 +3847,14 @@ static int parse_CRestrictionArray(tvbuff_t *tvb, int offset, proto_tree *parent
|
||||||
|
|
||||||
|
for (i=0; i<count; i++) {
|
||||||
|
struct CRestriction r;
|
||||||
|
- offset = parse_CRestriction(tvb, offset, tree, pad_tree, &r, "Restriction[%d]", i);
|
||||||
|
+ offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree, &r, "Restriction[%d]", i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
proto_item_set_end(item, tvb, offset);
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_CNodeRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CNodeRestriction *v, const char *fmt, ...)
|
||||||
|
+static int parse_CNodeRestriction(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct CNodeRestriction *v, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_tree *tree;
|
||||||
|
proto_item *item;
|
||||||
|
@@ -3867,7 +3874,7 @@ static int parse_CNodeRestriction(tvbuff_t *tvb, int offset, proto_tree *parent_
|
||||||
|
for (i=0; i<v->cNode; i++) {
|
||||||
|
struct CRestriction r;
|
||||||
|
ZERO_STRUCT(r);
|
||||||
|
- offset = parse_CRestriction(tvb, offset, tree, pad_tree, &r, "paNode[%u]", i);
|
||||||
|
+ offset = parse_CRestriction(tvb, pinfo, offset, tree, pad_tree, &r, "paNode[%u]", i);
|
||||||
|
offset = parse_padding(tvb, offset, 4, tree, "padding_paNode[%u]", i); /*at begin or end of loop ????*/
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -4208,117 +4215,7 @@ static const char *str_CBaseStorageVariant(struct CBaseStorageVariant *value, gb
|
||||||
|
return wmem_strbuf_get_str(strbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_vType(tvbuff_t *tvb, int offset, guint16 *vtype)
|
||||||
|
-{
|
||||||
|
- guint16 tmp_vtype = tvb_get_letohs(tvb, offset);
|
||||||
|
- guint16 modifier = tmp_vtype & 0xFF00;
|
||||||
|
-
|
||||||
|
- switch (tmp_vtype & 0xFF) {
|
||||||
|
- case VT_EMPTY:
|
||||||
|
- *vtype = VT_EMPTY;
|
||||||
|
- break;
|
||||||
|
- case VT_NULL:
|
||||||
|
- *vtype = VT_NULL;
|
||||||
|
- break;
|
||||||
|
- case VT_I2:
|
||||||
|
- *vtype = VT_I2;
|
||||||
|
- break;
|
||||||
|
- case VT_I4:
|
||||||
|
- *vtype = VT_I4;
|
||||||
|
- break;
|
||||||
|
- case VT_R4:
|
||||||
|
- *vtype = VT_R4;
|
||||||
|
- break;
|
||||||
|
- case VT_R8:
|
||||||
|
- *vtype = VT_R8;
|
||||||
|
- break;
|
||||||
|
- case VT_CY:
|
||||||
|
- *vtype = VT_CY;
|
||||||
|
- break;
|
||||||
|
- case VT_DATE:
|
||||||
|
- *vtype = VT_DATE;
|
||||||
|
- break;
|
||||||
|
- case VT_BSTR:
|
||||||
|
- *vtype = VT_BSTR;
|
||||||
|
- break;
|
||||||
|
- case VT_ERROR:
|
||||||
|
- *vtype = VT_ERROR;
|
||||||
|
- break;
|
||||||
|
- case VT_BOOL:
|
||||||
|
- *vtype = VT_BOOL;
|
||||||
|
- break;
|
||||||
|
- case VT_VARIANT:
|
||||||
|
- *vtype = VT_VARIANT;
|
||||||
|
- break;
|
||||||
|
- case VT_DECIMAL:
|
||||||
|
- *vtype = VT_DECIMAL;
|
||||||
|
- break;
|
||||||
|
- case VT_I1:
|
||||||
|
- *vtype = VT_I1;
|
||||||
|
- break;
|
||||||
|
- case VT_UI1:
|
||||||
|
- *vtype = VT_UI1;
|
||||||
|
- break;
|
||||||
|
- case VT_UI2:
|
||||||
|
- *vtype = VT_UI2;
|
||||||
|
- break;
|
||||||
|
- case VT_UI4:
|
||||||
|
- *vtype = VT_UI4;
|
||||||
|
- break;
|
||||||
|
- case VT_I8:
|
||||||
|
- *vtype = VT_I8;
|
||||||
|
- break;
|
||||||
|
- case VT_UI8:
|
||||||
|
- *vtype = VT_UI8;
|
||||||
|
- break;
|
||||||
|
- case VT_INT:
|
||||||
|
- *vtype = VT_INT;
|
||||||
|
- break;
|
||||||
|
- case VT_UINT:
|
||||||
|
- *vtype = VT_UINT;
|
||||||
|
- break;
|
||||||
|
- case VT_LPSTR:
|
||||||
|
- *vtype = VT_LPSTR;
|
||||||
|
- break;
|
||||||
|
- case VT_LPWSTR:
|
||||||
|
- *vtype = VT_LPWSTR;
|
||||||
|
- break;
|
||||||
|
- case VT_COMPRESSED_LPWSTR:
|
||||||
|
- *vtype = VT_COMPRESSED_LPWSTR;
|
||||||
|
- break;
|
||||||
|
- case VT_FILETIME:
|
||||||
|
- *vtype = VT_FILETIME;
|
||||||
|
- break;
|
||||||
|
- case VT_BLOB:
|
||||||
|
- *vtype = VT_BLOB;
|
||||||
|
- break;
|
||||||
|
- case VT_BLOB_OBJECT:
|
||||||
|
- *vtype = VT_BLOB_OBJECT;
|
||||||
|
- break;
|
||||||
|
- case VT_CLSID:
|
||||||
|
- *vtype = VT_CLSID;
|
||||||
|
- break;
|
||||||
|
- default:
|
||||||
|
- DISSECTOR_ASSERT(FALSE);
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- if (modifier) {
|
||||||
|
- switch (modifier) {
|
||||||
|
- case VT_VECTOR:
|
||||||
|
- *vtype |= VT_VECTOR;
|
||||||
|
- break;
|
||||||
|
- case VT_ARRAY:
|
||||||
|
- *vtype |= VT_ARRAY;
|
||||||
|
- break;
|
||||||
|
- default:
|
||||||
|
- DISSECTOR_ASSERT(FALSE);
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- return offset + 2;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static int parse_CBaseStorageVariant(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, struct CBaseStorageVariant *value, const char *text)
|
||||||
|
+static int parse_CBaseStorageVariant(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree _U_, struct CBaseStorageVariant *value, const char *text)
|
||||||
|
{
|
||||||
|
int i, len;
|
||||||
|
proto_item *ti, *ti_type, *ti_val;
|
||||||
|
@@ -4329,9 +4226,19 @@ static int parse_CBaseStorageVariant(tvbuff_t *tvb, int offset, proto_tree *pare
|
||||||
|
|
||||||
|
tree = proto_tree_add_subtree(parent_tree, tvb, offset, 0, ett_CBaseStorageVariant, &ti, text);
|
||||||
|
|
||||||
|
- parse_vType(tvb, offset, &value->vType);
|
||||||
|
- value->type = vType_get_type(value->vType);
|
||||||
|
- DISSECTOR_ASSERT(value->type != NULL);
|
||||||
|
+ value->vType = tvb_get_letohs(tvb, offset);
|
||||||
|
+ value->type = vType_get_type(value->vType & 0xFF);
|
||||||
|
+ if (value->type == NULL) {
|
||||||
|
+ /*
|
||||||
|
+ * Not a valid type.
|
||||||
|
+ */
|
||||||
|
+ ti_type = proto_tree_add_string(tree, hf_mswsp_cbasestorvariant_vtype, tvb, offset, 2, "Unknown CBaseStorageVariant type");
|
||||||
|
+ offset += 2;
|
||||||
|
+ expert_add_info(pinfo, ti_type, &ei_mswsp_invalid_variant_type);
|
||||||
|
+
|
||||||
|
+ THROW_MESSAGE(ReportedBoundsError, "Unknown CBaseStorageVariant type");
|
||||||
|
+ return offset;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
ti_type = proto_tree_add_string(tree, hf_mswsp_cbasestorvariant_vtype, tvb, offset, 2, value->type->str);
|
||||||
|
offset += 2;
|
||||||
|
@@ -4452,7 +4359,7 @@ static int parse_CDbColId(tvbuff_t *tvb, int offset, proto_tree *parent_tree, pr
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_CDbProp(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct GuidPropertySet *propset, const char *fmt, ...)
|
||||||
|
+static int parse_CDbProp(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, struct GuidPropertySet *propset, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
static const value_string EMPTY_VS[] = {{0, NULL}};
|
||||||
|
const value_string *vs = (propset && propset->id_map) ? propset->id_map : EMPTY_VS;
|
||||||
|
@@ -4485,7 +4392,7 @@ static int parse_CDbProp(tvbuff_t *tvb, int offset, proto_tree *parent_tree, pro
|
||||||
|
|
||||||
|
offset = parse_CDbColId(tvb, offset, tree, pad_tree, "colid");
|
||||||
|
|
||||||
|
- offset = parse_CBaseStorageVariant(tvb, offset, tree, pad_tree, &value, "vValue");
|
||||||
|
+ offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &value, "vValue");
|
||||||
|
|
||||||
|
str = str_CBaseStorageVariant(&value, TRUE);
|
||||||
|
proto_item_append_text(item, " %s", str);
|
||||||
|
@@ -4494,7 +4401,7 @@ static int parse_CDbProp(tvbuff_t *tvb, int offset, proto_tree *parent_tree, pro
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_CDbPropSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+static int parse_CDbPropSet(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
int i, num;
|
||||||
|
e_guid_t guid;
|
||||||
|
@@ -4530,14 +4437,14 @@ static int parse_CDbPropSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree,
|
||||||
|
|
||||||
|
for (i = 0; i<num; i++) {
|
||||||
|
offset = parse_padding(tvb, offset, 4, pad_tree, "aProp[%d]", i);
|
||||||
|
- offset = parse_CDbProp(tvb, offset, tree, pad_tree, pset, "aProp[%d]", i);
|
||||||
|
+ offset = parse_CDbProp(tvb, pinfo, offset, tree, pad_tree, pset, "aProp[%d]", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_item_set_end(item, tvb, offset);
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_PropertySetArray(tvbuff_t *tvb, int offset, int size_offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+static int parse_PropertySetArray(tvbuff_t *tvb, packet_info *pinfo, int offset, int size_offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
const int offset_in = offset;
|
||||||
|
guint32 size, num;
|
||||||
|
@@ -4563,7 +4470,7 @@ static int parse_PropertySetArray(tvbuff_t *tvb, int offset, int size_offset, pr
|
||||||
|
offset += 4;
|
||||||
|
|
||||||
|
for (i = 0; i < (int)num; i++) {
|
||||||
|
- offset = parse_CDbPropSet(tvb, offset, tree, pad_tree, "PropertySet[%d]", i);
|
||||||
|
+ offset = parse_CDbPropSet(tvb, pinfo, offset, tree, pad_tree, "PropertySet[%d]", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_item_set_end(item, tvb, offset);
|
||||||
|
@@ -4601,7 +4508,7 @@ int parse_CColumnSet(tvbuff_t *tvb, int offset, proto_tree *tree, const char *fm
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2.2.1.23 RANGEBOUNDARY */
|
||||||
|
-int parse_RANGEBOUNDARY(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+int parse_RANGEBOUNDARY(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
guint32 ulType;
|
||||||
|
guint8 labelPresent;
|
||||||
|
@@ -4622,7 +4529,7 @@ int parse_RANGEBOUNDARY(tvbuff_t *tvb, int offset, proto_tree *parent_tree, prot
|
||||||
|
offset += 4;
|
||||||
|
|
||||||
|
ZERO_STRUCT(prval);
|
||||||
|
- offset = parse_CBaseStorageVariant(tvb, offset, tree, pad_tree, &prval, "prVal");
|
||||||
|
+ offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &prval, "prVal");
|
||||||
|
|
||||||
|
labelPresent = tvb_get_guint8(tvb, offset);
|
||||||
|
proto_tree_add_item(tree, hf_mswsp_rangeboundry_labelpresent, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||||
|
@@ -4650,7 +4557,7 @@ int parse_RANGEBOUNDARY(tvbuff_t *tvb, int offset, proto_tree *parent_tree, prot
|
||||||
|
|
||||||
|
|
||||||
|
/* 2.2.1.22 CRangeCategSpec */
|
||||||
|
-int parse_CRangeCategSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+int parse_CRangeCategSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_item *item;
|
||||||
|
proto_tree *tree;
|
||||||
|
@@ -4671,7 +4578,7 @@ int parse_CRangeCategSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, pr
|
||||||
|
offset += 4;
|
||||||
|
|
||||||
|
for (i=0; i<cRange; i++) {
|
||||||
|
- offset = parse_RANGEBOUNDARY(tvb, offset, tree, pad_tree, "aRangeBegin[%u]", i);
|
||||||
|
+ offset = parse_RANGEBOUNDARY(tvb, pinfo, offset, tree, pad_tree, "aRangeBegin[%u]", i);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -4680,7 +4587,7 @@ int parse_CRangeCategSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, pr
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2.2.1.21 CCategSpec */
|
||||||
|
-int parse_CCategSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+int parse_CCategSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_item *item;
|
||||||
|
proto_tree *tree;
|
||||||
|
@@ -4700,7 +4607,7 @@ int parse_CCategSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_t
|
||||||
|
|
||||||
|
offset = parse_CSort(tvb, offset, tree, pad_tree, "CSort");
|
||||||
|
|
||||||
|
- offset = parse_CRangeCategSpec(tvb, offset, tree, pad_tree, "CRangeCategSpec");
|
||||||
|
+ offset = parse_CRangeCategSpec(tvb, pinfo, offset, tree, pad_tree, "CRangeCategSpec");
|
||||||
|
|
||||||
|
proto_item_set_end(item, tvb, offset);
|
||||||
|
return offset;
|
||||||
|
@@ -4867,7 +4774,7 @@ static int parse_CInGroupSortAggregSet_type(tvbuff_t *tvb, int offset, proto_tre
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2.2.1.29 CInGroupSortAggregSet */
|
||||||
|
-static int parse_CInGroupSortAggregSet(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+static int parse_CInGroupSortAggregSet(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_item *item;
|
||||||
|
proto_tree *tree;
|
||||||
|
@@ -4885,7 +4792,7 @@ static int parse_CInGroupSortAggregSet(tvbuff_t *tvb, int offset, proto_tree *pa
|
||||||
|
|
||||||
|
if (type == GroupIdValue) {
|
||||||
|
struct CBaseStorageVariant id;
|
||||||
|
- offset = parse_CBaseStorageVariant(tvb, offset, tree, pad_tree, &id, "inGroupId");
|
||||||
|
+ offset = parse_CBaseStorageVariant(tvb, pinfo, offset, tree, pad_tree, &id, "inGroupId");
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = parse_CSortSet(tvb, offset, tree, pad_tree, "SortSet");
|
||||||
|
@@ -4896,7 +4803,7 @@ static int parse_CInGroupSortAggregSet(tvbuff_t *tvb, int offset, proto_tree *pa
|
||||||
|
|
||||||
|
|
||||||
|
/* 2.2.1.28 CInGroupSortAggregSets */
|
||||||
|
-static int parse_CInGroupSortAggregSets(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+static int parse_CInGroupSortAggregSets(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
guint32 cCount, i;
|
||||||
|
proto_item *item;
|
||||||
|
@@ -4916,7 +4823,7 @@ static int parse_CInGroupSortAggregSets(tvbuff_t *tvb, int offset, proto_tree *p
|
||||||
|
|
||||||
|
for (i=0; i<cCount; i++) {
|
||||||
|
/* 2.2.1.29 CInGroupSortAggregSet */
|
||||||
|
- offset = parse_CInGroupSortAggregSet(tvb, offset, tree, pad_tree, "SortSets[%u]", i);
|
||||||
|
+ offset = parse_CInGroupSortAggregSet(tvb, pinfo, offset, tree, pad_tree, "SortSets[%u]", i);
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_item_set_end(item, tvb, offset);
|
||||||
|
@@ -4924,7 +4831,7 @@ static int parse_CInGroupSortAggregSets(tvbuff_t *tvb, int offset, proto_tree *p
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2.2.1.20 CCategorizationSpec */
|
||||||
|
-int parse_CCategorizationSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
+int parse_CCategorizationSpec(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, proto_tree *pad_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_item *item;
|
||||||
|
proto_tree *tree;
|
||||||
|
@@ -4941,7 +4848,7 @@ int parse_CCategorizationSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree
|
||||||
|
offset = parse_CColumnSet(tvb, offset, tree, "csColumns");
|
||||||
|
|
||||||
|
/* 2.2.1.21 CCategSpec */
|
||||||
|
- offset = parse_CCategSpec(tvb, offset, tree, pad_tree, "Spec");
|
||||||
|
+ offset = parse_CCategSpec(tvb, pinfo, offset, tree, pad_tree, "Spec");
|
||||||
|
|
||||||
|
/* 2.2.1.24 CAggregSet */
|
||||||
|
offset = parse_CAggregSet(tvb, offset, tree, pad_tree, "AggregSet");
|
||||||
|
@@ -4950,7 +4857,7 @@ int parse_CCategorizationSpec(tvbuff_t *tvb, int offset, proto_tree *parent_tree
|
||||||
|
offset = parse_CSortAggregSet(tvb, offset, tree, pad_tree, "SortAggregSet");
|
||||||
|
|
||||||
|
/* 2.2.1.28 CInGroupSortAggregSets */
|
||||||
|
- offset = parse_CInGroupSortAggregSets(tvb, offset, tree, pad_tree, "InGroupSortAggregSets");
|
||||||
|
+ offset = parse_CInGroupSortAggregSets(tvb, pinfo, offset, tree, pad_tree, "InGroupSortAggregSets");
|
||||||
|
|
||||||
|
proto_tree_add_item(tree, hf_mswsp_categorizationspec_cmaxres, tvb, offset, 4, ENC_LITTLE_ENDIAN);
|
||||||
|
offset += 4;
|
||||||
|
@@ -5273,17 +5180,14 @@ static int parse_CRowVariantArrayInfo(tvbuff_t *tvb, int offset, proto_tree *tre
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_VariantColVector(tvbuff_t *tvb, int offset, proto_tree *tree, guint64 base_address, gboolean is_64bit, struct CRowVariant *variant)
|
||||||
|
+static int parse_VariantColVector(tvbuff_t *tvb, int offset, proto_tree *tree, guint64 base_address, gboolean is_64bit, struct CRowVariant *variant, struct vtype_data *vt_list_type)
|
||||||
|
{
|
||||||
|
guint32 i = 0;
|
||||||
|
guint64 count = 0;
|
||||||
|
int buf_offset = 0;
|
||||||
|
proto_tree *sub_tree;
|
||||||
|
- struct vtype_data *vt_list_type =
|
||||||
|
- vType_get_type((enum vType)(variant->vtype & 0x00FF));
|
||||||
|
wmem_strbuf_t *strbuf;
|
||||||
|
|
||||||
|
- DISSECTOR_ASSERT(vt_list_type != NULL);
|
||||||
|
offset = parse_CRowVariantArrayInfo(tvb, offset, tree, is_64bit, variant);
|
||||||
|
if (is_64bit) {
|
||||||
|
buf_offset =
|
||||||
|
@@ -5335,10 +5239,10 @@ static int parse_VariantColVector(tvbuff_t *tvb, int offset, proto_tree *tree, g
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_VariantCol(tvbuff_t *tvb, int offset, proto_tree *parent_tree, guint64 base_address, guint32 length _U_, gboolean is_64bit, struct CRowVariant *variant, const char *fmt, ...)
|
||||||
|
+static int parse_VariantCol(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *parent_tree, guint64 base_address, guint32 length _U_, gboolean is_64bit, struct CRowVariant *variant, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_tree *tree;
|
||||||
|
- proto_item *item;
|
||||||
|
+ proto_item *item, *ti_type;
|
||||||
|
|
||||||
|
va_list ap;
|
||||||
|
struct vtype_data *vt_type;
|
||||||
|
@@ -5354,8 +5258,6 @@ static int parse_VariantCol(tvbuff_t *tvb, int offset, proto_tree *parent_tree,
|
||||||
|
|
||||||
|
variant->vtype = tvb_get_letohs(tvb, offset);
|
||||||
|
vt_type = vType_get_type((enum vType)variant->vtype);
|
||||||
|
- DISSECTOR_ASSERT(vt_type != NULL);
|
||||||
|
-
|
||||||
|
vtype_high = (variant->vtype & 0xFF00);
|
||||||
|
if (vtype_high) {
|
||||||
|
if (vtype_high == VT_VECTOR) {
|
||||||
|
@@ -5367,6 +5269,17 @@ static int parse_VariantCol(tvbuff_t *tvb, int offset, proto_tree *parent_tree,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (vt_type == NULL) {
|
||||||
|
+ /*
|
||||||
|
+ * Not a valid type.
|
||||||
|
+ */
|
||||||
|
+ ti_type = proto_tree_add_string(tree, hf_mswsp_ctablecolumn_vtype, tvb, offset, 4, "Unknown variant column type");
|
||||||
|
+ expert_add_info(pinfo, ti_type, &ei_mswsp_invalid_variant_type);
|
||||||
|
+ offset += 2;
|
||||||
|
+
|
||||||
|
+ THROW_FORMATTED(ReportedBoundsError, "Unknown variant column type%s", modifier);
|
||||||
|
+ return offset;
|
||||||
|
+ }
|
||||||
|
proto_tree_add_string_format_value(tree, hf_mswsp_rowvariant_vtype, tvb, offset, 2, vt_type->str, "%s%s", vt_type->str, modifier);
|
||||||
|
offset += 2;
|
||||||
|
|
||||||
|
@@ -5382,7 +5295,7 @@ static int parse_VariantCol(tvbuff_t *tvb, int offset, proto_tree *parent_tree,
|
||||||
|
|
||||||
|
if (vtype_high == VT_VECTOR || vtype_high == VT_ARRAY) {
|
||||||
|
offset = parse_VariantColVector(tvb, offset, tree, base_address,
|
||||||
|
- is_64bit, variant);
|
||||||
|
+ is_64bit, variant, vt_type);
|
||||||
|
} else {
|
||||||
|
wmem_strbuf_t *strbuf = wmem_strbuf_new(wmem_packet_scope(), "");
|
||||||
|
if (size != -1) {
|
||||||
|
@@ -5421,7 +5334,7 @@ static int parse_VariantCol(tvbuff_t *tvb, int offset, proto_tree *parent_tree,
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_RowsBufferCol(tvbuff_t *tvb, int offset, guint32 row, guint32 col, struct CPMSetBindingsIn *bindingsin, struct rows_data *rowsin, gboolean b_is_64bit, proto_tree *parent_tree, const char *fmt, ...)
|
||||||
|
+static int parse_RowsBufferCol(tvbuff_t *tvb, packet_info *pinfo, int offset, guint32 row, guint32 col, struct CPMSetBindingsIn *bindingsin, struct rows_data *rowsin, gboolean b_is_64bit, proto_tree *parent_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_tree *tree;
|
||||||
|
proto_item *item;
|
||||||
|
@@ -5463,13 +5376,13 @@ static int parse_RowsBufferCol(tvbuff_t *tvb, int offset, guint32 row, guint32 c
|
||||||
|
len = tvb_get_letohs(tvb, buf_offset + pcol->lengthoffset) - pcol->valuesize;
|
||||||
|
}
|
||||||
|
if (pcol->vtype == VT_VARIANT) {
|
||||||
|
- parse_VariantCol(tvb, tmp_offset, tree, base_address, len, b_is_64bit, &variant, "CRowVariant");
|
||||||
|
+ parse_VariantCol(tvb, pinfo, tmp_offset, tree, base_address, len, b_is_64bit, &variant, "CRowVariant");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int parse_RowsBuffer(tvbuff_t *tvb, int offset, guint32 num_rows, struct CPMSetBindingsIn *bindingsin, struct rows_data *rowsin, gboolean is64bit, proto_tree *parent_tree, const char *fmt, ...)
|
||||||
|
+static int parse_RowsBuffer(tvbuff_t *tvb, packet_info *pinfo, int offset, guint32 num_rows, struct CPMSetBindingsIn *bindingsin, struct rows_data *rowsin, gboolean is64bit, proto_tree *parent_tree, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
proto_tree *tree;
|
||||||
|
proto_item *item;
|
||||||
|
@@ -5488,7 +5401,7 @@ static int parse_RowsBuffer(tvbuff_t *tvb, int offset, guint32 num_rows, struct
|
||||||
|
proto_tree *row_tree;
|
||||||
|
row_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_GetRowsRow, NULL, "Row[%d]", num);
|
||||||
|
for (col = 0; col < bindingsin->ccolumns; col++) {
|
||||||
|
- parse_RowsBufferCol(tvb, offset, num, col, bindingsin, rowsin, is64bit, row_tree, "Col[%d]", col);
|
||||||
|
+ parse_RowsBufferCol(tvb, pinfo, offset, num, col, bindingsin, rowsin, is64bit, row_tree, "Col[%d]", col);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return offset;
|
||||||
|
@@ -5557,11 +5470,11 @@ static int dissect_CPMConnect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *par
|
||||||
|
|
||||||
|
offset = parse_padding(tvb, offset, 8, pad_tree, "_paddingcPropSets");
|
||||||
|
|
||||||
|
- offset = parse_PropertySetArray(tvb, offset, blob_size1_off, tree, pad_tree, "PropSets");
|
||||||
|
+ offset = parse_PropertySetArray(tvb, pinfo, offset, blob_size1_off, tree, pad_tree, "PropSets");
|
||||||
|
|
||||||
|
offset = parse_padding(tvb, offset, 8, pad_tree, "paddingExtPropset");
|
||||||
|
|
||||||
|
- offset = parse_PropertySetArray(tvb, offset, blob_size2_off, tree, pad_tree, "ExtPropset");
|
||||||
|
+ offset = parse_PropertySetArray(tvb, pinfo, offset, blob_size2_off, tree, pad_tree, "ExtPropset");
|
||||||
|
|
||||||
|
offset = parse_padding(tvb, offset, 8, pad_tree, "???");
|
||||||
|
|
||||||
|
@@ -5616,7 +5529,7 @@ static int dissect_CPMCreateQuery(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
offset += 1;
|
||||||
|
|
||||||
|
if (CRestrictionPresent) {
|
||||||
|
- offset = parse_CRestrictionArray(tvb, offset, tree, pad_tree, "RestrictionArray");
|
||||||
|
+ offset = parse_CRestrictionArray(tvb, pinfo, offset, tree, pad_tree, "RestrictionArray");
|
||||||
|
}
|
||||||
|
|
||||||
|
CSortSetPresent = tvb_get_guint8(tvb, offset);
|
||||||
|
@@ -5625,7 +5538,7 @@ static int dissect_CPMCreateQuery(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
|
||||||
|
if (CSortSetPresent) {
|
||||||
|
offset = parse_padding(tvb, offset, 4, tree, "paddingCSortSetPresent");
|
||||||
|
- offset = parse_CInGroupSortAggregSets(tvb, offset, tree, pad_tree, "GroupSortAggregSets");
|
||||||
|
+ offset = parse_CInGroupSortAggregSets(tvb, pinfo, offset, tree, pad_tree, "GroupSortAggregSets");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5641,7 +5554,7 @@ static int dissect_CPMCreateQuery(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
proto_tree_add_uint(tree, hf_mswsp_msg_cpmcreatequery_ccateg_count, tvb, offset, 4, count);
|
||||||
|
offset += 4;
|
||||||
|
for (i=0; i<count; i++) {
|
||||||
|
- offset = parse_CCategorizationSpec(tvb, offset, tree, pad_tree, "categories[%u]", i);
|
||||||
|
+ offset = parse_CCategorizationSpec(tvb, pinfo, offset, tree, pad_tree, "categories[%u]", i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5803,7 +5716,7 @@ static int dissect_CPMGetRows(tvbuff_t *tvb, packet_info *pinfo, proto_tree *par
|
||||||
|
if (b_has_arch && bindingsin && rowsin) {
|
||||||
|
offset = parse_padding(tvb, offset, rowsin->cbreserved, pad_tree,
|
||||||
|
"paddingRows");
|
||||||
|
- parse_RowsBuffer(tvb, offset, num_rows, bindingsin, rowsin, b_64bit_mode, tree, "Rows");
|
||||||
|
+ parse_RowsBuffer(tvb, pinfo, offset, num_rows, bindingsin, rowsin, b_64bit_mode, tree, "Rows");
|
||||||
|
} else {
|
||||||
|
gint nbytes = tvb_reported_length_remaining(tvb, offset);
|
||||||
|
proto_tree_add_expert_format(tree, pinfo, &ei_missing_msg_context, tvb, offset, nbytes, "Undissected %d bytes (due to missing preceding msg(s))", nbytes);
|
||||||
|
@@ -5950,7 +5863,7 @@ static int dissect_CPMSetBindings(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
sizeof(struct CTableColumn) * num);
|
||||||
|
for (n=0; n<num; n++) {
|
||||||
|
offset = parse_padding(tvb, offset, 4, pad_tree, "padding_aColumns[%u]", n);
|
||||||
|
- offset = parse_CTableColumn(tvb, offset, tree, pad_tree, &request.acolumns[n],"aColumns[%u]", n);
|
||||||
|
+ offset = parse_CTableColumn(tvb, pinfo, offset, tree, pad_tree, &request.acolumns[n],"aColumns[%u]", n);
|
||||||
|
}
|
||||||
|
data = find_or_create_message_data(ct, pinfo,0xD0,in, private_data);
|
||||||
|
if (data) {
|
||||||
|
@@ -8051,6 +7964,7 @@ proto_register_mswsp(void)
|
||||||
|
};
|
||||||
|
|
||||||
|
static ei_register_info ei[] = {
|
||||||
|
+ { &ei_mswsp_invalid_variant_type, { "mswsp.invalid_variant_type", PI_PROTOCOL, PI_ERROR, "Invalid variant type", EXPFILL }},
|
||||||
|
{ &ei_missing_msg_context, { "mswsp.msg.cpmgetrows.missing_msg_context", PI_SEQUENCE, PI_WARN, "previous messages needed for context not captured", EXPFILL }},
|
||||||
|
{ &ei_mswsp_msg_cpmsetbinding_ccolumns, { "mswsp.msg.cpmsetbinding.ccolumns.invalude", PI_PROTOCOL, PI_WARN, "Invalid number of cColumns for packet", EXPFILL }}
|
||||||
|
};
|
46
SOURCES/wireshark-0016-CVE-19622.patch
Normal file
46
SOURCES/wireshark-0016-CVE-19622.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-mmse.c b/epan/dissectors/packet-mmse.c
|
||||||
|
index ffb4faa003..1e3d13abeb 100644
|
||||||
|
--- a/epan/dissectors/packet-mmse.c
|
||||||
|
+++ b/epan/dissectors/packet-mmse.c
|
||||||
|
@@ -487,6 +487,12 @@ get_value_length(tvbuff_t *tvb, guint offset, guint *byte_count, packet_info *pi
|
||||||
|
field = tvb_get_guintvar(tvb, offset, byte_count, pinfo, &ei_mmse_oversized_uintvar);
|
||||||
|
(*byte_count)++;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ /* The packet says there are this many bytes; ensure they're there.
|
||||||
|
+ * We do this here because several callers do math on the length we
|
||||||
|
+ * return here and may not catch an overflow.
|
||||||
|
+ */
|
||||||
|
+ tvb_ensure_bytes_exist(tvb, offset, field);
|
||||||
|
return field;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -689,7 +695,7 @@ static void
|
||||||
|
dissect_mmse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 pdut,
|
||||||
|
const char *message_type)
|
||||||
|
{
|
||||||
|
- guint offset;
|
||||||
|
+ guint offset, old_offset;
|
||||||
|
guint8 field = 0;
|
||||||
|
const char *strval;
|
||||||
|
guint length;
|
||||||
|
@@ -711,6 +717,7 @@ dissect_mmse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 pdut,
|
||||||
|
proto_tree_add_uint(mmse_tree, hf_mmse_message_type, tvb, 0, 2, pdut);
|
||||||
|
|
||||||
|
offset = 2; /* Skip Message-Type */
|
||||||
|
+ old_offset = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Cycle through MMS-headers
|
||||||
|
@@ -1209,6 +1216,11 @@ dissect_mmse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 pdut,
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
DebugLog(("\tEnd(case)\n"));
|
||||||
|
+
|
||||||
|
+ if (offset <= old_offset) {
|
||||||
|
+ REPORT_DISSECTOR_BUG("Offset isn't increasing (offset=%u, old offset=%u)", offset, old_offset);
|
||||||
|
+ }
|
||||||
|
+ old_offset = offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugLog(("\tEnd(switch)\n"));
|
41
SOURCES/wireshark-0017-CVE-19623.patch
Normal file
41
SOURCES/wireshark-0017-CVE-19623.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-lbmpdm.c b/epan/dissectors/packet-lbmpdm.c
|
||||||
|
index 0df59329fd..16001b859c 100644
|
||||||
|
--- a/epan/dissectors/packet-lbmpdm.c
|
||||||
|
+++ b/epan/dissectors/packet-lbmpdm.c
|
||||||
|
@@ -12,6 +12,7 @@
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include <epan/packet.h>
|
||||||
|
+#include <epan/exceptions.h>
|
||||||
|
#include "packet-lbm.h"
|
||||||
|
|
||||||
|
/* Magic number for message header to check if data is big-endian or little-endian. */
|
||||||
|
@@ -837,7 +838,6 @@ static int dissect_segment_ofstable(tvbuff_t * tvb, int offset, packet_info * pi
|
||||||
|
proto_tree * subtree = NULL;
|
||||||
|
int datalen = 0;
|
||||||
|
int seglen = 0;
|
||||||
|
- int datalen_remaining = 0;
|
||||||
|
int ofs = 0;
|
||||||
|
int field_count = 0;
|
||||||
|
int idx;
|
||||||
|
@@ -862,9 +862,8 @@ static int dissect_segment_ofstable(tvbuff_t * tvb, int offset, packet_info * pi
|
||||||
|
id_list[idx] = -1;
|
||||||
|
ofs_list[idx] = -1;
|
||||||
|
}
|
||||||
|
- datalen_remaining = datalen;
|
||||||
|
ofs = offset + L_LBMPDM_SEG_HDR_T;
|
||||||
|
- for (idx = 0; (idx < field_count) && (datalen_remaining >= L_LBMPDM_OFFSET_ENTRY_T); idx++, ofs += L_LBMPDM_OFFSET_ENTRY_T)
|
||||||
|
+ for (idx = 0; idx < field_count; idx++, ofs += L_LBMPDM_OFFSET_ENTRY_T)
|
||||||
|
{
|
||||||
|
proto_item * offset_item = NULL;
|
||||||
|
proto_tree * offset_tree = NULL;
|
||||||
|
@@ -875,6 +874,9 @@ static int dissect_segment_ofstable(tvbuff_t * tvb, int offset, packet_info * pi
|
||||||
|
id_list[idx] = (gint32)lbmpdm_fetch_uint32_encoded(tvb, ofs + O_LBMPDM_OFFSET_ENTRY_T_ID, encoding);
|
||||||
|
proto_tree_add_item(offset_tree, hf_lbmpdm_offset_entry_offset, tvb, ofs + O_LBMPDM_OFFSET_ENTRY_T_OFFSET, L_LBMPDM_OFFSET_ENTRY_T_OFFSET, encoding);
|
||||||
|
ofs_list[idx] = (gint32)lbmpdm_fetch_uint32_encoded(tvb, ofs + O_LBMPDM_OFFSET_ENTRY_T_OFFSET, encoding);
|
||||||
|
+ if (id_list[idx] < 0 || ofs_list[idx] < 0) {
|
||||||
|
+ THROW(ReportedBoundsError);
|
||||||
|
+ }
|
||||||
|
if (id_list[idx] > max_index)
|
||||||
|
{
|
||||||
|
max_index = id_list[idx];
|
17
SOURCES/wireshark-0018-CVE-19624.patch
Normal file
17
SOURCES/wireshark-0018-CVE-19624.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-pvfs2.c b/epan/dissectors/packet-pvfs2.c
|
||||||
|
index e2b61bef7a..1c1012ceca 100644
|
||||||
|
--- a/epan/dissectors/packet-pvfs2.c
|
||||||
|
+++ b/epan/dissectors/packet-pvfs2.c
|
||||||
|
@@ -2314,6 +2314,12 @@ dissect_pvfs2_getconfig_response(tvbuff_t *tvb, proto_tree *parent_tree,
|
||||||
|
/* Get pointer to server config data */
|
||||||
|
ptr = tvb_get_ptr(tvb, offset, total_config_bytes);
|
||||||
|
|
||||||
|
+ if (!ptr)
|
||||||
|
+ {
|
||||||
|
+ /* Not enough data. Bail out. */
|
||||||
|
+ return offset;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Check if all data is available */
|
||||||
|
length_remaining = tvb_captured_length_remaining(tvb, offset);
|
||||||
|
|
19
SOURCES/wireshark-0019-CVE-19625.patch
Normal file
19
SOURCES/wireshark-0019-CVE-19625.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
diff --git a/epan/tvbuff_composite.c b/epan/tvbuff_composite.c
|
||||||
|
index 5832477f81..e5ab7c8b17 100644
|
||||||
|
--- a/epan/tvbuff_composite.c
|
||||||
|
+++ b/epan/tvbuff_composite.c
|
||||||
|
@@ -51,12 +51,9 @@ composite_free(tvbuff_t *tvb)
|
||||||
|
}
|
||||||
|
|
||||||
|
static guint
|
||||||
|
-composite_offset(const tvbuff_t *tvb, const guint counter)
|
||||||
|
+composite_offset(const tvbuff_t *tvb _U_, const guint counter)
|
||||||
|
{
|
||||||
|
- const struct tvb_composite *composite_tvb = (const struct tvb_composite *) tvb;
|
||||||
|
- const tvbuff_t *member = (const tvbuff_t *)composite_tvb->composite.tvbs->data;
|
||||||
|
-
|
||||||
|
- return tvb_offset_from_real_beginning_counter(member, counter);
|
||||||
|
+ return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const guint8*
|
16
SOURCES/wireshark-0020-CVE-19626.patch
Normal file
16
SOURCES/wireshark-0020-CVE-19626.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-dcom.c b/epan/dissectors/packet-dcom.c
|
||||||
|
index d12216a767..79cf6a6009 100644
|
||||||
|
--- a/epan/dissectors/packet-dcom.c
|
||||||
|
+++ b/epan/dissectors/packet-dcom.c
|
||||||
|
@@ -1725,8 +1725,10 @@ dissect_dcom_BSTR(tvbuff_t *tvb, gint offset, packet_info *pinfo,
|
||||||
|
offset = dissect_dcom_dcerpc_array_size(tvb, offset, pinfo, sub_tree, di, drep,
|
||||||
|
&u32ArraySize);
|
||||||
|
|
||||||
|
- if ((guint32)offset + u32ArraySize*2 > G_MAXINT)
|
||||||
|
+ if ((guint32)offset + u32ArraySize*2 > G_MAXINT) {
|
||||||
|
+ pszStr[0] = 0;
|
||||||
|
return offset;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
realOffset = offset + u32ArraySize*2;
|
||||||
|
|
17
SOURCES/wireshark-0021-CVE-19627.patch
Normal file
17
SOURCES/wireshark-0021-CVE-19627.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff --git a/wiretap/vwr.c b/wiretap/vwr.c
|
||||||
|
index 8725ba9c3c..173614ec34 100644
|
||||||
|
--- a/wiretap/vwr.c
|
||||||
|
+++ b/wiretap/vwr.c
|
||||||
|
@@ -2155,9 +2155,10 @@ static gboolean vwr_read_s3_W_rec(vwr_t *vwr, wtap_rec *record,
|
||||||
|
end_time = e_time / NS_IN_US; /* convert to microseconds first */
|
||||||
|
|
||||||
|
/* extract the 32 LSBs of the signature timestamp field */
|
||||||
|
- m_ptr = &(rec[stats_offset+8+12]);
|
||||||
|
+ int m_ptr_offset = stats_offset + 8 + 12;
|
||||||
|
+ m_ptr = rec + m_ptr_offset;
|
||||||
|
pay_off = 42; /* 24 (MAC) + 8 (SNAP) + IP */
|
||||||
|
- sig_off = find_signature(m_ptr, rec_size - 20, pay_off, flow_id, flow_seq);
|
||||||
|
+ sig_off = find_signature(m_ptr, rec_size - m_ptr_offset, pay_off, flow_id, flow_seq);
|
||||||
|
if (m_ptr[sig_off] == 0xdd)
|
||||||
|
sig_ts = get_signature_ts(m_ptr, sig_off, rec_size - vVW510021_W_STATS_TRAILER_LEN);
|
||||||
|
else
|
17
SOURCES/wireshark-0022-CVE-19628.patch
Normal file
17
SOURCES/wireshark-0022-CVE-19628.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
diff --git a/epan/dissectors/packet-zbee-zcl-lighting.c b/epan/dissectors/packet-zbee-zcl-lighting.c
|
||||||
|
index 2f8d880447..4757c272ce 100644
|
||||||
|
--- a/epan/dissectors/packet-zbee-zcl-lighting.c
|
||||||
|
+++ b/epan/dissectors/packet-zbee-zcl-lighting.c
|
||||||
|
@@ -876,7 +876,11 @@ decode_color_xy(gchar *s, guint16 value)
|
||||||
|
static void
|
||||||
|
decode_color_temperature(gchar *s, guint16 value)
|
||||||
|
{
|
||||||
|
- g_snprintf(s, ITEM_LABEL_LENGTH, "%d [Mired] (%d [K])", value, 1000000/value);
|
||||||
|
+ if (value == 0) {
|
||||||
|
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u [Mired]", value);
|
||||||
|
+ } else {
|
||||||
|
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%u [Mired] (%u [K])", value, 1000000/value);
|
||||||
|
+ }
|
||||||
|
return;
|
||||||
|
} /*decode_power_conf_voltage*/
|
||||||
|
|
10
SOURCES/wireshark-0023-desktop-file.patch
Normal file
10
SOURCES/wireshark-0023-desktop-file.patch
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
diff --git a/wireshark.desktop b/wireshark.desktop
|
||||||
|
index 9b7339b..cfc787a 100644
|
||||||
|
--- a/wireshark.desktop
|
||||||
|
+++ b/wireshark.desktop
|
||||||
|
@@ -108,4 +108,4 @@ Terminal=false
|
||||||
|
MimeType=application/vnd.tcpdump.pcap;application/x-pcapng;application/x-snoop;application/x-iptrace;application/x-lanalyzer;application/x-nettl;application/x-radcom;application/x-etherpeek;application/x-visualnetworks;application/x-netinstobserver;application/x-5view;application/x-tektronix-rf5;application/x-micropross-mplog;application/x-apple-packetlogger;application/x-endace-erf;application/ipfix;application/x-ixia-vwr;
|
||||||
|
# Category entry according to:
|
||||||
|
# http://standards.freedesktop.org/menu-spec/1.0/
|
||||||
|
-Categories=Application;Network;Monitor;Qt;
|
||||||
|
+Categories=Network;Monitor;Qt;
|
1191
SPECS/wireshark.spec
Normal file
1191
SPECS/wireshark.spec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user