commit
ba7c99a667
@ -0,0 +1 @@
|
|||||||
|
SOURCES/wireshark-3.4.10.tar.xz
|
@ -0,0 +1 @@
|
|||||||
|
63839abd94d3ae376f860e2d2969777680106578 SOURCES/wireshark-3.4.10.tar.xz
|
@ -0,0 +1 @@
|
|||||||
|
SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640"
|
@ -0,0 +1,60 @@
|
|||||||
|
-----BEGIN PGP SIGNED MESSAGE-----
|
||||||
|
Hash: SHA512
|
||||||
|
|
||||||
|
wireshark-3.4.10.tar.xz: 32344804 bytes
|
||||||
|
SHA256(wireshark-3.4.10.tar.xz)=8aa7ef4a44ae62bb8db463cf761e2cc03b97305e0e77ed5be53fa83729187cef
|
||||||
|
RIPEMD160(wireshark-3.4.10.tar.xz)=eef58ec4e28c6eecc382c1f000257ab60ee6c40c
|
||||||
|
SHA1(wireshark-3.4.10.tar.xz)=63839abd94d3ae376f860e2d2969777680106578
|
||||||
|
|
||||||
|
Wireshark-win64-3.4.10.exe: 71382832 bytes
|
||||||
|
SHA256(Wireshark-win64-3.4.10.exe)=faa83ac4f289d07d8e1bacb7e7611758b231a9c00b18e816654f40e7437529fd
|
||||||
|
RIPEMD160(Wireshark-win64-3.4.10.exe)=63068a04839ff02828a6915fe648da25cdeadc84
|
||||||
|
SHA1(Wireshark-win64-3.4.10.exe)=00c419e3382d24289cfc9d74be6f37934b784066
|
||||||
|
|
||||||
|
Wireshark-win32-3.4.10.exe: 55424616 bytes
|
||||||
|
SHA256(Wireshark-win32-3.4.10.exe)=3bceac74d2d7c388e01b6c25b20088c234fefbcd83e3c960b3e0fcc1eca7839d
|
||||||
|
RIPEMD160(Wireshark-win32-3.4.10.exe)=84acc6b49f1e8735ec53127b1d9de14a1d121b2f
|
||||||
|
SHA1(Wireshark-win32-3.4.10.exe)=d6486f9015e60e633f0f2a7fd5152959c4bb749b
|
||||||
|
|
||||||
|
Wireshark-win64-3.4.10.msi: 49291264 bytes
|
||||||
|
SHA256(Wireshark-win64-3.4.10.msi)=b31288207b23700931ddb83785bcc9a9a775758029fbc1cdd653f65b8d802e7d
|
||||||
|
RIPEMD160(Wireshark-win64-3.4.10.msi)=d93a0cfebe7c2e412ade6e25c3a225b643d498e0
|
||||||
|
SHA1(Wireshark-win64-3.4.10.msi)=e36624c35824966255f768dc74148a7fe4a895d2
|
||||||
|
|
||||||
|
Wireshark-win32-3.4.10.msi: 43925504 bytes
|
||||||
|
SHA256(Wireshark-win32-3.4.10.msi)=6b6770e596968fdb0e68af3e3dba77631004f374accda085dc59df799011fa0f
|
||||||
|
RIPEMD160(Wireshark-win32-3.4.10.msi)=374b51b4934bd5d98023df4b8be355bf2c1515e9
|
||||||
|
SHA1(Wireshark-win32-3.4.10.msi)=df8a5c168bad317ff7b6ed1f12dec4926a2983f2
|
||||||
|
|
||||||
|
WiresharkPortable_3.4.10.paf.exe: 38220424 bytes
|
||||||
|
SHA256(WiresharkPortable_3.4.10.paf.exe)=85f2382b854be81ee7bc3deedaab41214e60e17a83c25822d4e5831c1d88e379
|
||||||
|
RIPEMD160(WiresharkPortable_3.4.10.paf.exe)=644f056554925fc37a44cfb247d0678efcb01c81
|
||||||
|
SHA1(WiresharkPortable_3.4.10.paf.exe)=8b36a16b9b602a1f5bb8cc37453fd1678e8fa476
|
||||||
|
|
||||||
|
Wireshark 3.4.10 Intel 64.dmg: 131298336 bytes
|
||||||
|
SHA256(Wireshark 3.4.10 Intel 64.dmg)=1267edf27870fe17e504f2377f78eb7510c4a13e4b53b9b00e171303208749c4
|
||||||
|
RIPEMD160(Wireshark 3.4.10 Intel 64.dmg)=880a76731ddaed630bfc575e36627cad1e239249
|
||||||
|
SHA1(Wireshark 3.4.10 Intel 64.dmg)=8783733e2f6f124c102b51f2e245d9deab11ff6d
|
||||||
|
|
||||||
|
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 Arm 64.dmg"
|
||||||
|
Other: openssl sha256 wireshark-x.y.z.tar.xz
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAEBCgAdFiEEWlrbp9vqbD+HIk8ZgiRKeOb+ruoFAmGVXKYACgkQgiRKeOb+
|
||||||
|
rurDaQ//bZ7JSUS+v+eN1Te+TOBEmurQPc9oiY4/nQKa9vb4pKK3kP36zsUE59qT
|
||||||
|
hDCWWxijG4fgriFeMNKPJ9YErzEWyPkIEtXwyke2ubuIiNkRKhvSfz8BME49M9lD
|
||||||
|
ybPz/Rer2a/QS0+tU1LSd7NBArJdfxn3QtYbOLBkrqTSCH3eaxXQfKvM9mta10ZW
|
||||||
|
9YWxOVF8Lz4QqbolTb16ZgfcCI1XryOGs4W4Hd/YpaUnXvW6eYjIWs+KvCFQv/90
|
||||||
|
3nVjZbeMmW+lyLk1QhoLYo/wW+E80Cf8q5eCx/ohTauBIkcz2okpmB//UmYS4Ldv
|
||||||
|
YYyngLMIJpyZxry5YSg8lqBEwSOJh25cSxrKIdthzJMBFHAvtb7QKzGPPLBbvnnt
|
||||||
|
IBGq+u80/HqPRLdeBmbdS8e/YtHFSxTdLDb0wfNQ5p/Re/r9x35dFU/6Pafbr19E
|
||||||
|
s+FhEAcM66P7hECP91oDd6w3TuE9ZtdKzGNPUSezUSSn5D5FduLQ/lqGfnUV0qBm
|
||||||
|
ADi5tqoSkluGWfUefZ2KiUOlhQ4Lr82JaZbBnws8rY+krjRrGUxtnuwdKUTRNcTU
|
||||||
|
o5eWlVCvORvaKDJxaWw/3WoSpiP0dmio8XAz7gPxufyBcbw/xIQ+v53rmxIT7O6/
|
||||||
|
b97ZED+ZpU7kpYS8pnvTPPbj3nB4HHPpUkygHUvoUMxibFjOj2o=
|
||||||
|
=SVDw
|
||||||
|
-----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;
|
||||||
|
|
@ -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:
|
||||||
|
# https://specifications.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:
|
@ -0,0 +1,295 @@
|
|||||||
|
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/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/tempfile.c | 9 +++---
|
||||||
|
wsutil/tempfile.h | 4 +--
|
||||||
|
wsutil/wstmpdir.c | 70 ++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
wsutil/wstmpdir.h | 39 +++++++++++++++++++++++
|
||||||
|
8 files changed, 132 insertions(+), 11 deletions(-)
|
||||||
|
create mode 100644 wsutil/wstmpdir.c
|
||||||
|
create mode 100644 wsutil/wstmpdir.h
|
||||||
|
|
||||||
|
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/tempfile.c b/wsutil/tempfile.c
|
||||||
|
index 5082452..f751a7c 100644
|
||||||
|
--- a/wsutil/tempfile.c
|
||||||
|
+++ b/wsutil/tempfile.c
|
||||||
|
@@ -12,10 +12,12 @@
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
#include "tempfile.h"
|
||||||
|
+#include <wsutil/file_util.h>
|
||||||
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a tempfile with the given prefix (e.g. "wireshark"). The path
|
||||||
|
- * is created using g_file_open_tmp.
|
||||||
|
+ * is created using get_tmp_dir.
|
||||||
|
*
|
||||||
|
* @param namebuf [in,out] If not NULL, receives the full path of the temp file.
|
||||||
|
* Must be freed.
|
||||||
|
@@ -30,6 +31,9 @@ create_tempfile(gchar **namebuf, const char *pfx, const char *sfx, GError **err)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
gchar *safe_pfx = NULL;
|
||||||
|
+ gchar *tmp_file;
|
||||||
|
+ const char *tmp_dir;
|
||||||
|
+ int old_mask;
|
||||||
|
|
||||||
|
if (pfx) {
|
||||||
|
/* The characters in "delimiters" come from:
|
||||||
|
@@ -49,7 +53,15 @@ create_tempfile(gchar **namebuf, const char *pfx, const char *sfx, GError **err)
|
||||||
|
gchar* filetmpl = g_strdup_printf("%sXXXXXX%s", safe_pfx ? safe_pfx : "", sfx ? sfx : "");
|
||||||
|
g_free(safe_pfx);
|
||||||
|
|
||||||
|
- fd = g_file_open_tmp(filetmpl, namebuf, err);
|
||||||
|
+ tmp_dir = get_tmp_dir();
|
||||||
|
+ tmp_file = g_strconcat(tmp_dir, "/", filetmpl, NULL);
|
||||||
|
+
|
||||||
|
+ if (namebuf)
|
||||||
|
+ *namebuf = tmp_file;
|
||||||
|
+
|
||||||
|
+ old_mask = ws_umask(0077);
|
||||||
|
+ fd = mkstemps(tmp_file, sfx ? (int) strlen(sfx) : 0);
|
||||||
|
+ ws_umask(old_mask);
|
||||||
|
|
||||||
|
g_free(filetmpl);
|
||||||
|
return fd;
|
||||||
|
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_file_open_tmp.
|
||||||
|
+ * is created using get_tmp_dir and mkstemp.
|
||||||
|
*
|
||||||
|
* @param namebuf [in,out] If not NULL, receives the full path of the temp file.
|
||||||
|
* Must 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,71 @@
|
||||||
|
+/* 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';
|
||||||
|
+ fprintf(stderr, "Using P_tmpdir: %s\n", P_tmpdir);
|
||||||
|
+ }
|
||||||
|
+#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
|
||||||
|
|
@ -0,0 +1,20 @@
|
|||||||
|
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
|
||||||
|
wsjson.h
|
||||||
|
xtea.h
|
||||||
|
)
|
||||||
|
@@ -118,6 +118,7 @@ set(WSUTIL_COMMON_FILES
|
||||||
|
unicode-utils.c
|
||||||
|
ws_mempbrk.c
|
||||||
|
ws_pipe.c
|
||||||
|
+ wstmpdir.c
|
||||||
|
wsgcrypt.c
|
||||||
|
wsjson.c
|
||||||
|
xtea.c
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,56 @@
|
|||||||
|
diff --git a/capinfos.c b/capinfos.c
|
||||||
|
index 5536766..12b141e 100644
|
||||||
|
--- a/capinfos.c
|
||||||
|
+++ b/capinfos.c
|
||||||
|
@@ -739,7 +739,8 @@ print_stats(const gchar *filename, capture_info *cf_info)
|
||||||
|
}
|
||||||
|
if (cap_file_hashes) {
|
||||||
|
printf ("SHA256: %s\n", file_sha256);
|
||||||
|
- printf ("RIPEMD160: %s\n", file_rmd160);
|
||||||
|
+ if(!gcry_fips_mode_active())
|
||||||
|
+ printf ("RIPEMD160: %s\n", file_rmd160);
|
||||||
|
printf ("SHA1: %s\n", file_sha1);
|
||||||
|
}
|
||||||
|
if (cap_order) printf ("Strict time order: %s\n", order_string(cf_info->order));
|
||||||
|
@@ -851,7 +852,8 @@ print_stats_table_header(void)
|
||||||
|
if (cap_packet_rate) print_stats_table_header_label("Average packet rate (packets/sec)");
|
||||||
|
if (cap_file_hashes) {
|
||||||
|
print_stats_table_header_label("SHA256");
|
||||||
|
- print_stats_table_header_label("RIPEMD160");
|
||||||
|
+ if(!gcry_fips_mode_active())
|
||||||
|
+ print_stats_table_header_label("RIPEMD160");
|
||||||
|
print_stats_table_header_label("SHA1");
|
||||||
|
}
|
||||||
|
if (cap_order) print_stats_table_header_label("Strict time order");
|
||||||
|
@@ -1447,7 +1449,10 @@ print_usage(FILE *output)
|
||||||
|
fprintf(output, " -E display the capture file encapsulation\n");
|
||||||
|
fprintf(output, " -I display the capture file interface information\n");
|
||||||
|
fprintf(output, " -F display additional capture file information\n");
|
||||||
|
- fprintf(output, " -H display the SHA256, RMD160, and SHA1 hashes of the file\n");
|
||||||
|
+ if(!gcry_fips_mode_active())
|
||||||
|
+ fprintf(output, " -H display the SHA256 and SHA1 hashes of the file\n");
|
||||||
|
+ else
|
||||||
|
+ fprintf(output, " -H display the SHA256, RMD160, and SHA1 hashes of the file\n");
|
||||||
|
fprintf(output, " -k display the capture comment\n");
|
||||||
|
fprintf(output, "\n");
|
||||||
|
fprintf(output, "Size infos:\n");
|
||||||
|
@@ -1795,7 +1800,8 @@ main(int argc, char *argv[])
|
||||||
|
gcry_check_version(NULL);
|
||||||
|
gcry_md_open(&hd, GCRY_MD_SHA256, 0);
|
||||||
|
if (hd) {
|
||||||
|
- gcry_md_enable(hd, GCRY_MD_RMD160);
|
||||||
|
+ if(!gcry_fips_mode_active())
|
||||||
|
+ gcry_md_enable(hd, GCRY_MD_RMD160);
|
||||||
|
gcry_md_enable(hd, GCRY_MD_SHA1);
|
||||||
|
}
|
||||||
|
hash_buf = (char *)g_malloc(HASH_BUF_SIZE);
|
||||||
|
@@ -1817,7 +1823,8 @@ main(int argc, char *argv[])
|
||||||
|
}
|
||||||
|
gcry_md_final(hd);
|
||||||
|
hash_to_str(gcry_md_read(hd, GCRY_MD_SHA256), HASH_SIZE_SHA256, file_sha256);
|
||||||
|
- hash_to_str(gcry_md_read(hd, GCRY_MD_RMD160), HASH_SIZE_RMD160, file_rmd160);
|
||||||
|
+ if(!gcry_fips_mode_active())
|
||||||
|
+ hash_to_str(gcry_md_read(hd, GCRY_MD_RMD160), HASH_SIZE_RMD160, file_rmd160);
|
||||||
|
hash_to_str(gcry_md_read(hd, GCRY_MD_SHA1), HASH_SIZE_SHA1, file_sha1);
|
||||||
|
}
|
||||||
|
if (fh) fclose(fh);
|
@ -0,0 +1,142 @@
|
|||||||
|
From 0f27a83c5692b2afebe6e6934c1051f76aa2ecf9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jason Cohen <kryojenik2@gmail.com>
|
||||||
|
Date: Wed, 31 Aug 2022 11:10:17 -0500
|
||||||
|
Subject: [PATCH] f5ethtrailer: Improve "old-style" heuristic
|
||||||
|
|
||||||
|
Remove a chance for an infinate loop in the disection heuristic.
|
||||||
|
---
|
||||||
|
epan/dissectors/packet-f5ethtrailer.c | 108 +++++++++++++-------------
|
||||||
|
1 file changed, 56 insertions(+), 52 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/epan/dissectors/packet-f5ethtrailer.c b/epan/dissectors/packet-f5ethtrailer.c
|
||||||
|
index b2ba8f899d..915348ea83 100644
|
||||||
|
--- a/epan/dissectors/packet-f5ethtrailer.c
|
||||||
|
+++ b/epan/dissectors/packet-f5ethtrailer.c
|
||||||
|
@@ -2751,69 +2751,73 @@ dissect_dpt_trailer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *d
|
||||||
|
static gint
|
||||||
|
dissect_old_trailer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
|
||||||
|
{
|
||||||
|
- proto_tree *type_tree = NULL;
|
||||||
|
- proto_item *ti = NULL;
|
||||||
|
guint offset = 0;
|
||||||
|
- guint processed = 0;
|
||||||
|
- f5eth_tap_data_t *tdata = (f5eth_tap_data_t *)data;
|
||||||
|
- guint8 type;
|
||||||
|
- guint8 len;
|
||||||
|
- guint8 ver;
|
||||||
|
|
||||||
|
/* While we still have data in the trailer. For old format trailers, this needs
|
||||||
|
* type, length, version (3 bytes) and for new format trailers, the magic header (4 bytes).
|
||||||
|
* All old format trailers are at least 4 bytes long, so just check for length of magic.
|
||||||
|
*/
|
||||||
|
- while (tvb_reported_length_remaining(tvb, offset)) {
|
||||||
|
- type = tvb_get_guint8(tvb, offset);
|
||||||
|
- len = tvb_get_guint8(tvb, offset + F5_OFF_LENGTH) + F5_OFF_VERSION;
|
||||||
|
- ver = tvb_get_guint8(tvb, offset + F5_OFF_VERSION);
|
||||||
|
-
|
||||||
|
- if (len <= tvb_reported_length_remaining(tvb, offset) && type >= F5TYPE_LOW
|
||||||
|
- && type <= F5TYPE_HIGH && len >= F5_MIN_SANE && len <= F5_MAX_SANE
|
||||||
|
- && ver <= F5TRAILER_VER_MAX) {
|
||||||
|
- /* Parse out the specified trailer. */
|
||||||
|
- switch (type) {
|
||||||
|
- case F5TYPE_LOW:
|
||||||
|
- ti = proto_tree_add_item(tree, hf_low_id, tvb, offset, len, ENC_NA);
|
||||||
|
- type_tree = proto_item_add_subtree(ti, ett_f5ethtrailer_low);
|
||||||
|
-
|
||||||
|
- processed = dissect_low_trailer(tvb, pinfo, type_tree, offset, len, ver, tdata);
|
||||||
|
- if (processed > 0) {
|
||||||
|
- tdata->trailer_len += processed;
|
||||||
|
- tdata->noise_low = 1;
|
||||||
|
- }
|
||||||
|
- break;
|
||||||
|
- case F5TYPE_MED:
|
||||||
|
- ti = proto_tree_add_item(tree, hf_med_id, tvb, offset, len, ENC_NA);
|
||||||
|
- type_tree = proto_item_add_subtree(ti, ett_f5ethtrailer_med);
|
||||||
|
-
|
||||||
|
- processed = dissect_med_trailer(tvb, pinfo, type_tree, offset, len, ver, tdata);
|
||||||
|
- if (processed > 0) {
|
||||||
|
- tdata->trailer_len += processed;
|
||||||
|
- tdata->noise_med = 1;
|
||||||
|
- }
|
||||||
|
- break;
|
||||||
|
- case F5TYPE_HIGH:
|
||||||
|
- ti = proto_tree_add_item(tree, hf_high_id, tvb, offset, len, ENC_NA);
|
||||||
|
- type_tree = proto_item_add_subtree(ti, ett_f5ethtrailer_high);
|
||||||
|
-
|
||||||
|
- processed =
|
||||||
|
- dissect_high_trailer(tvb, pinfo, type_tree, offset, len, ver, tdata);
|
||||||
|
- if (processed > 0) {
|
||||||
|
- tdata->trailer_len += processed;
|
||||||
|
- tdata->noise_high = 1;
|
||||||
|
- }
|
||||||
|
- break;
|
||||||
|
+ while (tvb_reported_length_remaining(tvb, offset) >= F5_MIN_SANE) {
|
||||||
|
+ /* length field does not include the type and length bytes. Add them back in */
|
||||||
|
+ guint8 len = tvb_get_guint8(tvb, offset + F5_OFF_LENGTH) + F5_OFF_VERSION;
|
||||||
|
+ if (len > tvb_reported_length_remaining(tvb, offset)
|
||||||
|
+ || len < F5_MIN_SANE || len > F5_MAX_SANE) {
|
||||||
|
+ /* Invalid length - either a malformed trailer, corrupt packet, or not f5ethtrailer */
|
||||||
|
+ return offset;
|
||||||
|
+ }
|
||||||
|
+ guint8 type = tvb_get_guint8(tvb, offset);
|
||||||
|
+ guint8 ver = tvb_get_guint8(tvb, offset + F5_OFF_VERSION);
|
||||||
|
+
|
||||||
|
+ /* Parse out the specified trailer. */
|
||||||
|
+ proto_tree *type_tree = NULL;
|
||||||
|
+ proto_item *ti = NULL;
|
||||||
|
+ f5eth_tap_data_t *tdata = (f5eth_tap_data_t *)data;
|
||||||
|
+ guint processed = 0;
|
||||||
|
+
|
||||||
|
+ switch (type) {
|
||||||
|
+ case F5TYPE_LOW:
|
||||||
|
+ ti = proto_tree_add_item(tree, hf_low_id, tvb, offset, len, ENC_NA);
|
||||||
|
+ type_tree = proto_item_add_subtree(ti, ett_f5ethtrailer_low);
|
||||||
|
+
|
||||||
|
+ processed = dissect_low_trailer(tvb, pinfo, type_tree, offset, len, ver, tdata);
|
||||||
|
+ if (processed > 0) {
|
||||||
|
+ tdata->trailer_len += processed;
|
||||||
|
+ tdata->noise_low = 1;
|
||||||
|
}
|
||||||
|
- if (processed == 0) {
|
||||||
|
- proto_item_set_len(ti, 1);
|
||||||
|
- return offset;
|
||||||
|
+ break;
|
||||||
|
+ case F5TYPE_MED:
|
||||||
|
+ ti = proto_tree_add_item(tree, hf_med_id, tvb, offset, len, ENC_NA);
|
||||||
|
+ type_tree = proto_item_add_subtree(ti, ett_f5ethtrailer_med);
|
||||||
|
+
|
||||||
|
+ processed = dissect_med_trailer(tvb, pinfo, type_tree, offset, len, ver, tdata);
|
||||||
|
+ if (processed > 0) {
|
||||||
|
+ tdata->trailer_len += processed;
|
||||||
|
+ tdata->noise_med = 1;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ case F5TYPE_HIGH:
|
||||||
|
+ ti = proto_tree_add_item(tree, hf_high_id, tvb, offset, len, ENC_NA);
|
||||||
|
+ type_tree = proto_item_add_subtree(ti, ett_f5ethtrailer_high);
|
||||||
|
+
|
||||||
|
+ processed =
|
||||||
|
+ dissect_high_trailer(tvb, pinfo, type_tree, offset, len, ver, tdata);
|
||||||
|
+ if (processed > 0) {
|
||||||
|
+ tdata->trailer_len += processed;
|
||||||
|
+ tdata->noise_high = 1;
|
||||||
|
}
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ /* Unknown type - malformed trailer, corrupt packet, or not f5ethtrailer - bali out*/
|
||||||
|
+ return offset;
|
||||||
|
+ }
|
||||||
|
+ if (processed == 0) {
|
||||||
|
+ /* couldn't process trailer - bali out */
|
||||||
|
+ proto_item_set_len(ti, 1);
|
||||||
|
+ return offset;
|
||||||
|
}
|
||||||
|
offset += processed;
|
||||||
|
}
|
||||||
|
-return offset;
|
||||||
|
+ return offset;
|
||||||
|
} /* dissect_old_trailer() */
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
--
|
||||||
|
GitLab
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue