Compare commits

...
Sign in to create a new pull request.

53 commits

Author SHA1 Message Date
Peter Lemenkov
4d423a48ee New version 4.6.8
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2026-09-09 10:17:55 +02:00
Peter Lemenkov
9b43c179e8 Drop the desktop-file path patch, whose reason no longer holds
The patch rewrote TryExec and Exec in the desktop file to absolute
paths. It was added for rhbz #1059188: Nautilus refused to open pcap
files, reporting "There is no application installed for 'Packet Capture
(PCAPNG)' files", because Wireshark was installed in /usr/sbin, which
is not on an ordinary user's PATH. A TryExec that cannot be resolved
lets the entry be ignored, so the association disappeared. Naming the
binary in full was the right fix for a binary that is not on PATH.

Wireshark is in /usr/bin now, and /usr/sbin is a symlink to bin, so
"wireshark" resolves for any user and the entry works as upstream
ships it.

Keeping the absolute path is not free. It makes the menu entry disagree
with the shell: a build in ~/.local/bin is what "wireshark" runs in a
terminal, but the desktop entry would still start /usr/bin/wireshark.
It is also the minority form here - of the desktop files installed on a
Fedora system, roughly four in five name the program without a path,
and those that do use one are mostly /usr/libexec programs, which is
the same "not on PATH" reason that has now gone away.

A build installed under ~/.local is unaffected either way, since it
installs its own desktop file into ~/.local/share/applications, which
is searched ahead of /usr/share/applications.

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2026-09-08 21:45:00 +02:00
Peter Lemenkov
ed6da4fd79 Added note about upstream proposal
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2026-09-08 21:30:13 +02:00
Peter Lemenkov
0a1e55a478 Drop the Categories patch, which adds a deprecated value
The patch added Application to the Categories list in the desktop
file. That value is not in the freedesktop category registry, and
desktop-file-validate reports it:

    warning: value "Application;Network;Monitor;Qt;" for key
    "Categories" in group "Desktop Entry" contains a deprecated value
    "Application"

The %install section runs desktop-file-validate on the installed file,
so that warning has been in every build. It is a warning rather than an
error, which is why it went unnoticed.

Application was a required category back in Desktop Entry Specification
0.9.x, when this patch was written, and it is also what Fedora's old
desktop-file-install --add-category=Application produced. Neither is
current, and modern desktops ignore the value. The entry already says
Type=Application on the line above, so it was redundant even when it
was valid.

Upstream's Categories=Network;Monitor;Qt; is correct as it stands: one
main category and two additional ones, all of them registered, and it
validates clean. Nothing to send upstream here.

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2026-09-08 21:26:46 +02:00
Peter Lemenkov
66b902e4f8 Remove unnecessary patch
`cmake --install build --component Development` does the trick.

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2026-09-08 20:11:17 +02:00
Peter Lemenkov
928e8ef43e Improved tmpdir handling
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2026-09-08 16:56:24 +02:00
Peter Lemenkov
c985dfbd41 Remove stray patch which was applied upstream
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
2026-09-08 15:37:55 +02:00
Fedora Release Engineering
60736f4e6c Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-17 08:50:35 +00:00
Michal Ruprich
41f57995c5 New version 4.6.7 2026-07-14 17:38:59 +02:00
Yaakov Selkowitz
5320fdb534 Rebuilt for openssl 4.0 2026-06-12 20:05:20 -04:00
Michal Ruprich
b322ec58ee New version 4.6.6 2026-06-01 15:37:51 +02:00
Michal Ruprich
f04cc3f978 Python tools should only be shipped in Fedora 2026-03-11 09:22:00 +01:00
Michal Ruprich
aa822250ea Adding patch 2026-03-08 20:26:33 +01:00
Michal Ruprich
426e574331 Fixing Lua, adding a couple of tools 2026-03-06 16:54:15 +01:00
Michal Ruprich
2d96acd7fe New version 4.6.4 2026-03-04 10:56:27 +01:00
Fedora Release Engineering
b7d10b60f6 Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild 2026-01-17 20:16:45 +00:00
Michal Ruprich
fc0b356a80 New version 4.6.3 2026-01-15 09:39:24 +01:00
Yaakov Selkowitz
d00b96d9eb Enable HTTP/3 support on F43+ only
So far, packages which are adding nghttp3/ngtcp2 dependencies are doing so
only for F43+; possible support in ELN (RHEL 11) is still TBD.
2025-12-10 21:26:21 -05:00
6621283664 BuildRequires: libnghttp3-devel - needed for HTTP3 support 2025-12-09 16:51:30 +02:00
Michal Ruprich
e2e91a0b8f New version 4.6.1 2025-11-28 14:33:54 +01:00
Michal Ruprich
92f80f6263 New version 4.6.0 2025-10-13 12:59:16 +02:00
Michal Ruprich
433b55e0df New version 4.4.9 2025-09-01 21:24:23 +02:00
Fedora Release Engineering
b75536364f Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 20:27:35 +00:00
Michal Ruprich
e851189359 Adding new testing plans 2025-07-18 14:37:45 +02:00
Michal Ruprich
f7e5e9a71b New version 4.4.8 2025-07-18 11:41:08 +02:00
Michal Ruprich
7ef093270b New version 4.4.7 2025-06-05 15:48:35 +02:00
Michal Ruprich
d4f2911cf3 udevadm should be ignored if an error occures 2025-06-03 17:01:59 +02:00
Michal Ruprich
fc18e07d6d New version 4.4.6 2025-05-26 09:36:39 +02:00
Michal Ruprich
6c84c54e0a New version 4.4.5 2025-03-18 17:47:48 +01:00
Michal Ruprich
bf470dc099 New version 4.4.4 2025-02-20 08:44:22 +01:00
fa96ad923a Drop call to %sysusers_create_compat
After https://fedoraproject.org/wiki/Changes/RPMSuportForSystemdSysusers,
rpm will handle account creation automatically.
2025-02-11 18:03:12 +01:00
Michal Ruprich
df5d338c91 New version 4.4.3 2025-01-22 17:57:06 +01:00
Fedora Release Engineering
3b5e1ca1f0 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 15:05:45 +00:00
Michal Ruprich
3e218c38e7 New version 4.4.2 2024-11-21 10:35:42 +01:00
Michal Ruprich
f694014695 New version 4.4.1 2024-10-11 10:33:05 +02:00
Michal Ruprich
208badf420 Using cmake install for development headers and .cmake files 2024-09-20 11:45:12 +02:00
Michal Ruprich
9f9fd3d2ed New version 4.4.0 2024-09-02 10:06:26 +02:00
Fedora Release Engineering
12321ec858 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-20 09:24:39 +00:00
Michal Ruprich
3b551e750f New version 4.2.6 2024-07-11 09:47:41 +02:00
ae2d2f6a44 Rebuild (Qt6) 2024-05-24 00:59:53 -04:00
Michal Ruprich
b544a872c7 Uploading new sources 2024-05-22 10:10:29 +02:00
Michal Ruprich
f725712d47 New version 4.2.5 2024-05-22 09:48:17 +02:00
Jan Grulich
8cd86f692d Rebuild (qt6) 2024-05-21 22:14:07 +02:00
Michal Ruprich
e3df12a5f1 Enabling additional features (rhbz#2278136) 2024-05-05 10:15:45 +02:00
Michal Ruprich
6420a261ec New version 4.2.4 2024-04-08 10:35:06 +02:00
Jan Grulich
458399d009 Rebuild (qt6) 2024-04-04 14:13:07 +02:00
Marie Loise Nolden
1597f98830 rebase 2024-03-11 16:49:51 +01:00
Yaakov Selkowitz
5943ebdae6 Install more devel headers
The internal header structure changed in 4.2, and more headers are
required by those already installed in previous versions.  This is
needed to fix the build of libvirt with wireshark-devel 4.2.2.
2024-02-18 16:21:24 -05:00
Michal Ruprich
85d9580754 Making sure that wireshark.pc is created and installed 2024-02-11 17:11:06 +01:00
Michal Ruprich
4cdb9e8c1c New version 4.2.2 2024-02-01 10:30:49 +01:00
Fedora Release Engineering
c48825402c Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-27 08:53:11 +00:00
Michal Ruprich
7ced997b9e wireshark crash in managed interfaces 2023-08-31 09:09:32 +02:00
Michal Ruprich
09b6821e74 New version 4.0.8 2023-08-29 12:25:59 +02:00
17 changed files with 628 additions and 852 deletions

1
ci.fmf Normal file
View file

@ -0,0 +1 @@
resultsdb-testcase: separate

View file

@ -1,16 +1,25 @@
--- !Policy
product_versions:
- fedora-*
decision_contexts: [bodhi_update_push_testing]
decision_context: bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional}
#gating rawhide
#Rawhide
--- !Policy
product_versions:
- fedora-*
decision_contexts: [bodhi_update_push_stable]
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional}
#gating rhel
--- !Policy
product_versions:
- rhel-*
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-public.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional}

35
plans.fmf Normal file
View file

@ -0,0 +1,35 @@
/tier1-internal:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/wireshark.git
name: /plans/tier1/internal
/tier1-public:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/wireshark.git
name: /plans/tier1/public
/tier2-tier3-internal:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/wireshark.git
name: /plans/tier2-tier3/internal
/tier2-tier3-public:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/wireshark.git
name: /plans/tier2-tier3/public
/others-internal:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/wireshark.git
name: /plans/others/internal
/others-public:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/wireshark.git
name: /plans/others/public

View file

@ -1,6 +0,0 @@
summary: Test plan with all Fedora tests
discover:
how: fmf
url: https://src.fedoraproject.org/tests/wireshark.git
execute:
how: tmt

View file

@ -4,5 +4,10 @@ ownership:
ignore:
- /usr/bin/dumpcap
capabilities:
#dumpcap is the only binary that has group wireshark
ignore:
- /usr/bin/dumpcap
inspections:
xml: off

View file

@ -1,2 +1,2 @@
SHA512 (wireshark-4.0.7.tar.xz) = 98f609405f20a3714e7c5e4f806cae5cc842daaf0219bd92d3130d2930758cce244edca4529db59300b5ca1e1e98d1aa632bc5c85c92f26aa2e0c124e691a5ab
SHA512 (SIGNATURES-4.0.7.txt) = 4c89bffd394df2ffbd9050ff22ef1672a72d4b2c496b4790569acf7a14e29638533b51b272e73b59c31ebf6e63d34954c3482c76b30ba1cb2c82fee3780e19f2
SHA512 (wireshark-4.6.8.tar.xz) = 4692bd15bebd67475502b6afe106e3be85b90add16f932d7e58c4426fd62b5886e96daa522aafd9ee4a8300bf3e091a738b5b1fa20e3e0721d0d0f3be216f3c8
SHA512 (SIGNATURES-4.6.8.txt) = 598caa682ac71899465fb82a37445f7141287bbabee964dfd33aedbb4c4c6e0ed9b206d458b9eb2d9a083f9c6db9f8b50d8dcaf11e26dc33bb8baee83ae3f6fa

View file

@ -1,55 +1,28 @@
From: Jan Safranek <jsafrane@redhat.com>
Date: Fri, 26 Nov 2010 14:30:45 +0300
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "From: Jan Safranek" <jsafrane@redhat.com>
Date: Wed, 9 Sep 2026 08:53:35 +0200
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/capture/capture_sync.c b/capture/capture_sync.c
index 47a30a70c4..84d19568b0 100644
index 36a8f3edbe..db8b49b816 100644
--- a/capture/capture_sync.c
+++ b/capture/capture_sync.c
@@ -336,6 +336,7 @@ sync_pipe_start(capture_options *capture_opts, GPtrArray *capture_comments,
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
@@ -741,8 +742,10 @@ sync_pipe_start(capture_options *capture_opts, GPtrArray *capture_comments,
dup2(sync_pipe[PIPE_WRITE], 2);
ws_close(sync_pipe[PIPE_READ]);
execv(argv[0], argv);
- 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.";
+ 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
@@ -846,6 +849,7 @@ sync_pipe_open_command(char* const 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
@@ -994,8 +998,10 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd,
ws_close(sync_pipe[PIPE_READ]);
ws_close(sync_pipe[PIPE_WRITE]);
execv(argv[0], argv);
- 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.";
+ 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
@@ -2102,8 +2102,16 @@ sync_pipe_input_cb(GIOChannel *pipe_io, capture_session *cap_session)
if (!ws_strtoi32(buffer, NULL, &exec_errno)) {
ws_warning("Invalid errno: %s", buffer);
}
- primary_msg = ws_strdup_printf("Couldn't run dumpcap in child process: %s",
+ if (exec_errno == EPERM || exec_errno == EACCES) {
+ const char *securitymsg = "\nAre you a member of the 'wireshark' group? Try running\n'usermod -a -G wireshark _your_username_' as root.";
+ primary_msg = ws_strdup_printf("Couldn't run dumpcap in child process: %s%s",
+ g_strerror(exec_errno), securitymsg);
+ }
+ else {
+ primary_msg = ws_strdup_printf("Couldn't run dumpcap in child process: %s",
g_strerror(exec_errno));
+ }
+
cap_session->error(cap_session, primary_msg, NULL);
/* the capture child will close the sync_pipe, nothing to do for now */
/* (an error message doesn't mean we have to stop capturing) */

View file

@ -1,18 +0,0 @@
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 52c5017e1f..fb980269db 100644
--- a/plugins/epan/profinet/packet-dcom-cba.c
+++ b/plugins/epan/profinet/packet-dcom-cba.c
@@ -543,7 +543,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;

View file

@ -1,15 +0,0 @@
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/resources/freedesktop/org.wireshark.Wireshark.desktop b/resources/freedesktop/org.wireshark.Wireshark.desktop
index a880a50a33..a25d67d99b 100644
--- a/resources/freedesktop/org.wireshark.Wireshark.desktop
+++ b/resources/freedesktop/org.wireshark.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;

View file

@ -1,20 +0,0 @@
From: Kenneth Soerensen <knnthsrnsn@gmail.com>
Date: Wed, 29 Jan 2014 16:04:12 +0400
Subject: [PATCH] Fix paths in a org.wireshark.Wireshark.desktop file
diff --git a/resources/freedesktop/org.wireshark.Wireshark.desktop b/resources/freedesktop/org.wireshark.Wireshark.desktop
index a880a50a33..54b3595d55 100644
--- a/resources/freedesktop/org.wireshark.Wireshark.desktop
+++ b/resources/freedesktop/org.wireshark.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=org.wireshark.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:

View file

@ -1,271 +1,77 @@
From cb54210f7f02b07768cfbf49ae266d487f580e1b Mon Sep 17 00:00:00 2001
From: rpm-build <rpm-build>
Date: Thu, 29 Jun 2017 15:32:58 +0200
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Peter Hatina <phatina@redhat.com>
Date: Tue, 24 Sep 2013 10:55:09 +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.
Fedora mounts /tmp on tmpfs, which is backed by RAM, and capture files
are routinely larger than RAM, so the default temporary directory needs
to be somewhere on disk.
---
ui/qt/about_dialog.cpp | 3 +-
ui/qt/iax2_analysis_dialog.cpp | 5 ++-
ui/qt/utils/rtp_audio_file.cpp | 3 +-
wsutil/tempfile.c | 18 +++++++-
wsutil/tempfile.h | 2 +-
wsutil/wstmpdir.c | 71 ++++++++++++++++++++++++++++++++++
wsutil/wstmpdir.h | 39 +++++++++++++++++++
7 files changed, 134 insertions(+), 7 deletions(-)
create mode 100644 wsutil/wstmpdir.c
create mode 100644 wsutil/wstmpdir.h
Set TMPDIR in configuration_init(), which every program calls early in
main(). TMPDIR is the one knob that GLib (g_get_tmp_dir()), Qt
(QDir::tempPath()) and child processes such as dumpcap all read, so one
default covers every temporary file rather than the handful of call
sites a per-site patch can reach. A TMPDIR already in the environment is
left alone.
diff --git a/ui/qt/about_dialog.cpp b/ui/qt/about_dialog.cpp
index 752b669ac4..42c2be0fca 100644
--- a/ui/qt/about_dialog.cpp
+++ b/ui/qt/about_dialog.cpp
@@ -14,6 +14,7 @@
#include "main_application.h"
#include <wsutil/filesystem.h>
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
#include <QDesktopServices>
#include <QUrl>
@@ -185,7 +186,7 @@ FolderListModel::FolderListModel(QObject * parent):
appendRow(QStringList() << tr("\"File\" dialogs") << get_last_open_dir() << tr("capture files"));
/* temp */
- appendRow(QStringList() << tr("Temp") << (global_capture_opts.temp_dir && global_capture_opts.temp_dir[0] ? global_capture_opts.temp_dir : g_get_tmp_dir()) << tr("untitled capture files"));
+ appendRow(QStringList() << tr("Temp") << (global_capture_opts.temp_dir && global_capture_opts.temp_dir[0] ? global_capture_opts.temp_dir : 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 07b9b42e01..fb09de989b 100644
--- a/ui/qt/iax2_analysis_dialog.cpp
+++ b/ui/qt/iax2_analysis_dialog.cpp
@@ -25,6 +25,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>
@@ -255,10 +256,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/utils/rtp_audio_file.cpp b/ui/qt/utils/rtp_audio_file.cpp
index 591a63bbf3..203f5c5286 100644
--- a/ui/qt/utils/rtp_audio_file.cpp
+++ b/ui/qt/utils/rtp_audio_file.cpp
@@ -31,6 +31,7 @@
#include "rtp_audio_file.h"
#include <ws_attributes.h>
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */
RtpAudioFile::RtpAudioFile(bool use_disk_for_temp, bool use_disk_for_frames):
real_pos_(0)
@@ -45,7 +46,7 @@ RtpAudioFile::RtpAudioFile(bool use_disk_for_temp, bool use_disk_for_frames):
tempname = "memory";
if (use_disk_for_temp) {
- tempname = QString("%1/wireshark_rtp_stream").arg(QDir::tempPath());
+ tempname = QString("%1/wireshark_rtp_stream").arg(get_tmp_dir());
sample_file_ = new QTemporaryFile(tempname, this);
} else {
sample_file_ = new QBuffer(this);
diff --git a/wsutil/tempfile.c b/wsutil/tempfile.c
index f93f96d538..73964a1def 100644
--- a/wsutil/tempfile.c
+++ b/wsutil/tempfile.c
@@ -14,10 +14,12 @@
#include "tempfile.h"
#include "file_util.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 tempdir [in] If not NULL, the directory in which to create the file.
* @param namebuf [in,out] If not NULL, receives the full path of the temp file.
@@ -33,6 +33,9 @@ create_tempfile(const char *tempdir, gchar **namebuf, const char *pfx, const cha
{
int fd;
gchar *safe_pfx = NULL;
+ gchar *tmp_file;
+ const char *tmp_dir;
+ int old_mask;
if (pfx) {
/* The characters in "delimiters" come from:
@@ -54,7 +57,16 @@ create_tempfile(const char *tempdir, gchar **namebuf, const char *pfx, const cha
gchar* filetmpl = ws_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);
Only TMPDIR is consulted, and an empty one counts as unset - that is
exactly how GLib and Qt behave on Unix, where TMP and TEMP are ignored
entirely.
The change is Peter Hatina's, from 2013; the implementation above was
rewritten in 2026 and the original is worth recording. It added
wsutil/wstmpdir.{c,h} - a copy of g_get_tmp_dir() with a /var/tmp
fallback, exported from libwsutil as get_tmp_dir() - and rewrote
create_tempfile() around it.
That reached three of the roughly seventeen places that ask for a
temporary directory, missing the second temporary file in
rtp_audio_file.cpp, the export-object and traffic-tab dialogs, tshark's
own default, wsutil/socket.c and create_tempdir(). It also worked only
by accident: P_tmpdir is "/tmp" on glibc and was tested ahead of the
/var/tmp default, so the fallback was reached purely because
wstmpdir.c never included <stdio.h>. Adding that one header would have
silently restored /tmp.
Setting TMPDIR keeps Peter's intent and drops all of that.
Rewritten-by: Peter Lemenkov <lemenkov@gmail.com>
Assisted-by: Claude
diff --git a/wsutil/filesystem.c b/wsutil/filesystem.c
index f1c7358a97..6ee028cb71 100644
--- a/wsutil/filesystem.c
+++ b/wsutil/filesystem.c
@@ -932,6 +932,32 @@ configuration_init(const char* arg0)
#ifdef _WIN32
return configuration_init_w32(arg0);
#else
+ /*
+ * Fedora mounts /tmp on tmpfs, which is backed by RAM, and capture
+ * files are routinely larger than RAM. Default the temporary
+ * directory to /var/tmp unless the user has asked for something else.
+ *
+ * TMPDIR is the one knob that GLib (g_get_tmp_dir()), Qt
+ * (QDir::tempPath()) and child processes such as dumpcap all read on
+ * this platform, so setting it here covers every temporary file the
+ * programs create without having to touch each call site. It has to
+ * happen before any of them run, and configuration_init() is among
+ * the first things every program calls.
+ *
+ * Only TMPDIR is consulted. TMP and TEMP are Windows spellings that
+ * neither GLib nor Qt looks at on Unix, so honouring them here would
+ * promise something the rest of the code cannot keep.
+ *
+ * An empty TMPDIR counts as unset, which is how both GLib and Qt
+ * treat it - otherwise it would suppress this default and leave them
+ * falling back to /tmp, the one outcome nobody asked for.
+ */
+ const char *tmpdir = g_getenv("TMPDIR");
+
+ 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);
}
else {
diff --git a/wsutil/tempfile.h b/wsutil/tempfile.h
index 70031b5419..72011e265a 100644
--- a/wsutil/tempfile.h
+++ b/wsutil/tempfile.h
@@ -23,7 +23,7 @@ extern "C" {
/**
* 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 tempdir [in] If not NULL, the directory in which to create the file.
* @param namebuf [in,out] If not NULL, receives the full path of the temp file.
diff --git a/wsutil/wstmpdir.c b/wsutil/wstmpdir.c
new file mode 100644
index 0000000000..9128d354ce
--- /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);
+ if (tmpdir == NULL || tmpdir[0] == '\0') {
+ g_setenv("TMPDIR", "/var/tmp", true);
+ }
+
+ return tmp_dir;
+}
diff --git a/wsutil/wstmpdir.h b/wsutil/wstmpdir.h
new file mode 100644
index 0000000000..07ac5837ac
--- /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.37.3
return configuration_init_posix(arg0);
#endif
}

View file

@ -1,20 +0,0 @@
diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt
index a55086c..0149801 100644
--- a/wsutil/CMakeLists.txt
+++ b/wsutil/CMakeLists.txt
@@ -80,6 +80,7 @@ set(WSUTIL_PUBLIC_HEADERS
ws_roundup.h
ws_return.h
wsgcrypt.h
+ wstmpdir.h
wsjson.h
wslog.h
xtea.h
@@ -135,6 +136,7 @@ set(WSUTIL_COMMON_FILES
ws_mempbrk.c
ws_pipe.c
wsgcrypt.c
+ wstmpdir.c
wsjson.c
wslog.c
xtea.c

View file

@ -1,13 +0,0 @@
diff --git a/ui/qt/wireshark_main_window_slots.cpp b/ui/qt/wireshark_main_window_slots.cpp
index 0594ff6..3068797 100644
--- a/ui/qt/wireshark_main_window_slots.cpp
+++ b/ui/qt/wireshark_main_window_slots.cpp
@@ -2513,7 +2513,7 @@ void WiresharkMainWindow::showHideMainWidgets(QAction *action)
if (widget == toolbar) {
GList *entry = g_list_find_custom(recent.interface_toolbars, action->text().toUtf8(), (GCompareFunc)strcmp);
if (show && !entry) {
- recent.interface_toolbars = g_list_append(recent.interface_toolbars, g_strdup(action->text().toUtf8()));
+ recent.interface_toolbars = g_list_append(recent.interface_toolbars, g_strdup(action->text().toUtf8().constData()));
} else if (!show && entry) {
recent.interface_toolbars = g_list_remove(recent.interface_toolbars, entry->data);
}

View file

@ -1,213 +0,0 @@
From 601bf39e6b2eaff9e77588ff1b1a8a987dad404d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= <j@v6e.pt>
Date: Fri, 26 May 2023 14:16:06 +0100
Subject: [PATCH] CMake: Remove module LocatePythonModule.cmake
This module is unnecessary and frequently causes hard-to-debug
issues during CMake's configure run. Nuke it.
---
cmake/modules/LocatePythonModule.cmake | 53 --------------------------
cmake/modules/UseAsn2Wrs.cmake | 13 ++-----
cmake/modules/UseMakePluginReg.cmake | 7 +---
3 files changed, 6 insertions(+), 67 deletions(-)
delete mode 100644 cmake/modules/LocatePythonModule.cmake
diff --git a/cmake/modules/LocatePythonModule.cmake b/cmake/modules/LocatePythonModule.cmake
deleted file mode 100644
index 3fbe0c7..0000000
--- a/cmake/modules/LocatePythonModule.cmake
+++ /dev/null
@@ -1,53 +0,0 @@
-#LOCATE_PYTHON_MODULE(<module> [PATHS <path1> ... <pathN>] [REQUIRED])
-#
-# This function tries to find the given python module.
-# If found the path is provided in <PY_<module> and <<module>_FOUND> is set to TRUE.
-#
-# After PATHS additional paths for python to search can be provided.
-# When REQUIRED is set, the function will abort the cmake execution is the module is not found
-function(LOCATE_PYTHON_MODULE module)
- if(NOT PYTHON_EXECUTABLE)
- find_package(PythonInterp)
- endif()
-
- # Parse (additional) arguments
- set(options REQUIRED)
- set(multiValueArgs PATHS)
- cmake_parse_arguments(LPM "${options}" "" "${multiValueArgs}" ${ARGN})
-
- string(TOUPPER ${module} module_upper)
- if(NOT PY_${module_upper})
-
- if(LPM_PATHS)
- # Append LPM_PATHS to PYTHONPATH to search at provided location (first)
- file(TO_CMAKE_PATH "$ENV{PYTHONPATH}" CMAKE_PATH)
- list(INSERT CMAKE_PATH 0 ${LPM_PATHS})
- file(TO_NATIVE_PATH "${CMAKE_PATH}" NATIVE_PATH)
- if(UNIX)
- string(REPLACE ";" ":" NATIVE_PATH "${NATIVE_PATH}")
- endif(UNIX)
- set(ENV{PYTHONPATH} "${NATIVE_PATH}")
- endif(LPM_PATHS)
-
- # Use the (native) python impl module to find the location of the requested module
- execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
- "import imp; print(imp.find_module('${module}')[1])"
- RESULT_VARIABLE _${module}_status
- OUTPUT_VARIABLE _${module}_location
- ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- if(NOT _${module}_status)
- set(PY_${module_upper} ${_${module}_location} CACHE STRING
- "Location of Python module ${module}")
- set(${module_upper}_FOUND TRUE)
- message(STATUS "Found python module ${module}: ${PY_${module_upper}}")
- else(NOT _${module}_status)
- set(${module_upper}_FOUND FALSE)
- if(LPM_REQUIRED)
- message(FATAL_ERROR "Could NOT find python module ${module}")
- else(LPM_REQUIRED)
- message(STATUS "Could NOT find python module ${module}")
- endif(LPM_REQUIRED)
- endif(NOT _${module}_status)
- endif(NOT PY_${module_upper})
-endfunction(LOCATE_PYTHON_MODULE)
diff --git a/cmake/modules/UseMakePluginReg.cmake b/cmake/modules/UseMakePluginReg.cmake
index e6e6a91..fe57381 100644
--- a/cmake/modules/UseMakePluginReg.cmake
+++ b/cmake/modules/UseMakePluginReg.cmake
@@ -1,20 +1,17 @@
#
function(register_plugin_files _outputfile _registertype)
- include(LocatePythonModule)
- locate_python_module(make-plugin-reg REQUIRED PATHS ${CMAKE_SOURCE_DIR}/tools)
-
file(RELATIVE_PATH output "${CMAKE_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/${_outputfile}")
add_custom_command(
OUTPUT
${_outputfile}
COMMAND ${PYTHON_EXECUTABLE}
- ${PY_MAKE-PLUGIN-REG}
+ ${CMAKE_SOURCE_DIR}/tools/make-plugin-reg.py
${CMAKE_CURRENT_SOURCE_DIR}
${_registertype}
${ARGN}
COMMENT "Generating ${output}"
DEPENDS
${ARGN}
- ${PY_MAKE-PLUGIN-REG}
+ ${CMAKE_SOURCE_DIR}/tools/make-plugin-reg.py
)
endfunction()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6db2e46..21e71e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3825,7 +3825,6 @@ install(
${WS_CMAKE_MODULE_PATH}/FindWSLibrary.cmake
${WS_CMAKE_MODULE_PATH}/FindWSWinLibs.cmake
${WS_CMAKE_MODULE_PATH}/UseAsn2Wrs.cmake
- ${WS_CMAKE_MODULE_PATH}/LocatePythonModule.cmake
${WS_CMAKE_MODULE_PATH}/UseMakePluginReg.cmake
DESTINATION
${WIRESHARK_INSTALL_CMAKEDIR}
diff --git a/cmake/modules/FindAsciidoctor.cmake b/cmake/modules/FindAsciidoctor.cmake
index 67cbc8d..929a4eb 100644
--- a/cmake/modules/FindAsciidoctor.cmake
+++ b/cmake/modules/FindAsciidoctor.cmake
@@ -124,7 +124,7 @@ if(ASCIIDOCTOR_EXECUTABLE)
ADD_CUSTOM_COMMAND(
OUTPUT
${_output_txt}
- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/html2text.py
+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/html2text.py
${_output_html}
> ${_output_txt}
DEPENDS
diff --git a/cmake/modules/UseMakePluginReg.cmake b/cmake/modules/UseMakePluginReg.cmake
index fe57381..0c7198d 100644
--- a/cmake/modules/UseMakePluginReg.cmake
+++ b/cmake/modules/UseMakePluginReg.cmake
@@ -4,7 +4,7 @@ function(register_plugin_files _outputfile _registertype)
add_custom_command(
OUTPUT
${_outputfile}
- COMMAND ${PYTHON_EXECUTABLE}
+ COMMAND ${Python3_EXECUTABLE}
${CMAKE_SOURCE_DIR}/tools/make-plugin-reg.py
${CMAKE_CURRENT_SOURCE_DIR}
${_registertype}
diff --git a/cmake/modules/UseMakeTaps.cmake b/cmake/modules/UseMakeTaps.cmake
index aed9318..56fd628 100644
--- a/cmake/modules/UseMakeTaps.cmake
+++ b/cmake/modules/UseMakeTaps.cmake
@@ -5,7 +5,7 @@ MACRO(REGISTER_TAP_FILES _outputfile)
OUTPUT
${_outputfile}
COMMAND
- ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/make-regs.py taps ${_outputfile} ${_sources}
+ ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/make-regs.py taps ${_outputfile} ${_sources}
DEPENDS
${CMAKE_SOURCE_DIR}/tools/make-regs.py
${_sources}
diff --git a/cmake/modules/UseAsn2Wrs.cmake b/cmake/modules/UseAsn2Wrs.cmake
index 9d7cdfe..6b0c46c 100644
--- a/cmake/modules/UseAsn2Wrs.cmake
+++ b/cmake/modules/UseAsn2Wrs.cmake
@@ -6,11 +6,6 @@
# absolute path (e.g. "${CMAKE_CURRENT_SOURCE_DIR}").
function(ASN2WRS)
- if(NOT PY_ASN2WRS)
- include(LocatePythonModule)
- locate_python_module(asn2wrs REQUIRED PATHS "${CMAKE_SOURCE_DIR}/tools")
- endif()
-
if(NOT PROTO_OPT)
set(PROTO_OPT -p ${PROTOCOL_NAME})
elseif(PROTO_OPT STREQUAL "_EMPTY_")
@@ -38,8 +33,8 @@ function(ASN2WRS)
# Creates a dissector in the source directory and store the timestamp.
add_custom_command(
OUTPUT packet-${PROTOCOL_NAME}-stamp
- COMMAND "${PYTHON_EXECUTABLE}"
- ${PY_ASN2WRS}
+ COMMAND "${Python3_EXECUTABLE}"
+ ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py
${A2W_FLAGS}
${PROTO_OPT}
-c "${CMAKE_CURRENT_SOURCE_DIR}/${PROTOCOL_NAME}.cnf"
@@ -48,12 +43,12 @@ function(ASN2WRS)
-O "${A2W_OUTPUT_DIR}"
${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE}
COMMAND
- "${PYTHON_EXECUTABLE}" -c
+ "${Python3_EXECUTABLE}" -c
"import shutil, sys; x,s,d=sys.argv; open(d, 'w'); shutil.copystat(s, d)"
"${A2W_OUTPUT_DIR}/packet-${PROTOCOL_NAME}.c"
packet-${PROTOCOL_NAME}-stamp
DEPENDS
- "${PY_ASN2WRS}"
+ ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py
${SRC_FILES}
${EXTRA_CNF_targets}
${EXTRA_CNF}
@@ -67,8 +62,8 @@ function(ASN2WRS)
foreach(_asn2wrs_export_file IN LISTS EXPORT_FILES)
add_custom_command(
OUTPUT ${_asn2wrs_export_file}
- COMMAND "${PYTHON_EXECUTABLE}"
- "${PY_ASN2WRS}"
+ COMMAND "${Python3_EXECUTABLE}"
+ ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py
-E
${A2W_FLAGS}
${PROTO_OPT}
@@ -76,7 +71,7 @@ function(ASN2WRS)
-D "${CMAKE_CURRENT_SOURCE_DIR}"
${EXT_ASN_FILE_LIST} ${ASN_FILE_LIST} ${EXT_ASN_FILE_LIST_LATE}
DEPENDS
- "${PY_ASN2WRS}"
+ ${CMAKE_SOURCE_DIR}/tools/asn2wrs.py
${SRC_FILES}
${EXPORT_DEPENDS_targets}
${EXPORT_DEPENDS}

View file

@ -0,0 +1,257 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Tue, 8 Sep 2026 19:49:08 +0200
Subject: [PATCH] Docs: Build a manual page only when its program is built
The manual pages are added to the build unconditionally, so a build
configured without a program still generates, installs and packages
that program's page.
The default configuration shows it. BUILD_stratoshark is OFF by
default, yet stratoshark(1), strato(1), falcodump(1), sshdig(1) and
dumpcalls(1) are built and installed anyway, along with the Stratoshark
release notes, documenting programs that were never compiled. The same
goes for anything else switched off: randpktdump(1) survives
-DBUILD_randpktdump=OFF, and etwdump(1) is installed on every platform,
though the program it describes is built only on Windows.
Guard each page on the condition its program is built under, which is
what dpauxmon, sdjournal and mmdbresolve already do a few lines further
down. That means the dependency as well as the option, so sshdump,
ciscodump, wifidump and sshdig follow LIBSSH_FOUND and falcodump and
dumpcalls follow SINSP_FOUND, exactly as extcap/CMakeLists.txt builds
them. Extend the same to the HTML pages in DOC_FILES, where falcodump
and dumpcalls were already guarded and the rest were not, and to the
Stratoshark release notes.
sshdig moves to the stratoshark package in the Debian packaging. It is
a Stratoshark extcap, installed into STRATOSHARK_EXTCAP_INSTALL_LIBDIR
and shipped with stratoshark, but its manual page was listed in
wireshark-common. That was already wrong - a default build has no
sshdig binary in that package - and it becomes a build failure once the
page is only generated when the program is:
dh_installman: error: Cannot find (any matches for)
"obj-*/doc/man_pages/sshdig.1" (tried in ., debian/tmp)
Pages for things that are always built - wireshark, tshark, capinfos,
captype, dumpcap, editcap, mergecap, randpkt, rawshark, reordercap,
sharkd, text2pcap and the section 4 pages - stay unconditional.
Assisted-by: Claude
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2129bd0b22..e467cfdb1f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2281,33 +2281,60 @@ endif()
if (ASCIIDOCTOR_FOUND)
list(APPEND DOC_FILES
- ${CMAKE_BINARY_DIR}/doc/man_pages/androiddump.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/udpdump.html
${CMAKE_BINARY_DIR}/doc/man_pages/capinfos.html
${CMAKE_BINARY_DIR}/doc/man_pages/captype.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/ciscodump.html
${CMAKE_BINARY_DIR}/doc/man_pages/dumpcap.html
${CMAKE_BINARY_DIR}/doc/man_pages/editcap.html
${CMAKE_BINARY_DIR}/doc/man_pages/extcap.html
${CMAKE_BINARY_DIR}/doc/man_pages/mergecap.html
${CMAKE_BINARY_DIR}/doc/man_pages/randpkt.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/randpktdump.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/etwdump.html
${CMAKE_BINARY_DIR}/doc/man_pages/rawshark.html
${CMAKE_BINARY_DIR}/doc/man_pages/reordercap.html
${CMAKE_BINARY_DIR}/doc/man_pages/sharkd.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/sshdig.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/sshdump.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/strato.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/stratoshark.html
- ${CMAKE_BINARY_DIR}/doc/man_pages/wifidump.html
${CMAKE_BINARY_DIR}/doc/man_pages/text2pcap.html
${CMAKE_BINARY_DIR}/doc/man_pages/tshark.html
${CMAKE_BINARY_DIR}/doc/man_pages/wireshark.html
${CMAKE_BINARY_DIR}/doc/man_pages/wireshark-filter.html
"${CMAKE_BINARY_DIR}/doc/Wireshark Release Notes.html"
- "${CMAKE_BINARY_DIR}/doc/Stratoshark Release Notes.html"
)
+
+ #
+ # As with the manual pages themselves, only install the HTML for a
+ # program that is actually built.
+ #
+ if(BUILD_stratoshark)
+ list(APPEND DOC_FILES
+ ${CMAKE_BINARY_DIR}/doc/man_pages/stratoshark.html
+ "${CMAKE_BINARY_DIR}/doc/Stratoshark Release Notes.html"
+ )
+ endif()
+ if(BUILD_strato)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/strato.html)
+ endif()
+ if(BUILD_androiddump)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/androiddump.html)
+ endif()
+ if(BUILD_ciscodump AND LIBSSH_FOUND)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/ciscodump.html)
+ endif()
+ if(BUILD_etwdump AND WIN32)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/etwdump.html)
+ endif()
+ if(BUILD_randpktdump)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/randpktdump.html)
+ endif()
+ if(BUILD_sshdig AND LIBSSH_FOUND)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/sshdig.html)
+ endif()
+ if(BUILD_sshdump AND LIBSSH_FOUND)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/sshdump.html)
+ endif()
+ if(BUILD_udpdump)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/udpdump.html)
+ endif()
+ if(BUILD_wifidump AND LIBSSH_FOUND)
+ list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/wifidump.html)
+ endif()
if(MAXMINDDB_FOUND)
list(APPEND DOC_FILES ${CMAKE_BINARY_DIR}/doc/man_pages/mmdbresolve.html)
endif()
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index a92ed452fe..7a05821b4c 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -40,28 +40,70 @@ endmacro()
ADD_MAN_PAGE(wireshark 1)
ADD_MAN_PAGE(tshark 1)
-ADD_MAN_PAGE(stratoshark 1)
-ADD_MAN_PAGE(strato 1)
-ADD_MAN_PAGE(androiddump 1)
ADD_MAN_PAGE(capinfos 1)
ADD_MAN_PAGE(captype 1)
-ADD_MAN_PAGE(ciscodump 1)
ADD_MAN_PAGE(dumpcap 1)
ADD_MAN_PAGE(editcap 1)
-ADD_MAN_PAGE(etwdump 1)
-ADD_MAN_PAGE(falcodump 1)
ADD_MAN_PAGE(mergecap 1)
ADD_MAN_PAGE(randpkt 1)
-ADD_MAN_PAGE(randpktdump 1)
ADD_MAN_PAGE(rawshark 1)
ADD_MAN_PAGE(reordercap 1)
ADD_MAN_PAGE(sharkd 1)
-ADD_MAN_PAGE(sshdig 1)
-ADD_MAN_PAGE(sshdump 1)
ADD_MAN_PAGE(text2pcap 1)
-ADD_MAN_PAGE(udpdump 1)
-ADD_MAN_PAGE(wifidump 1)
+
+#
+# A program that is not built should not leave a manual page behind for
+# it. Each of these follows the option that decides whether the program
+# is built, the same way dpauxmon, sdjournal and mmdbresolve do below.
+#
+if(BUILD_stratoshark)
+ ADD_MAN_PAGE(stratoshark 1)
+endif()
+
+if(BUILD_strato)
+ ADD_MAN_PAGE(strato 1)
+endif()
+
+if(BUILD_androiddump)
+ ADD_MAN_PAGE(androiddump 1)
+endif()
+
+if(BUILD_ciscodump AND LIBSSH_FOUND)
+ ADD_MAN_PAGE(ciscodump 1)
+endif()
+
+if(BUILD_dumpcalls AND SINSP_FOUND)
+ ADD_MAN_PAGE(dumpcalls 1)
+endif()
+
+if(BUILD_etwdump AND WIN32)
+ ADD_MAN_PAGE(etwdump 1)
+endif()
+
+if(BUILD_falcodump AND SINSP_FOUND)
+ ADD_MAN_PAGE(falcodump 1)
+endif()
+
+if(BUILD_randpktdump)
+ ADD_MAN_PAGE(randpktdump 1)
+endif()
+
+if(BUILD_sshdig AND LIBSSH_FOUND)
+ ADD_MAN_PAGE(sshdig 1)
+endif()
+
+if(BUILD_sshdump AND LIBSSH_FOUND)
+ ADD_MAN_PAGE(sshdump 1)
+endif()
+
+if(BUILD_udpdump)
+ ADD_MAN_PAGE(udpdump 1)
+endif()
+
+if(BUILD_wifidump AND LIBSSH_FOUND)
+ ADD_MAN_PAGE(wifidump 1)
+endif()
ADD_MAN_PAGE(extcap 4)
ADD_MAN_PAGE(wireshark-filter 4)
@@ -112,13 +154,17 @@ endif()
if(ASCIIDOCTOR_FOUND)
ASCIIDOCTOR2HTML("Wireshark_Release_Notes.adoc" CONVERT_UNDERSCORES)
ASCIIDOCTOR2TXT("Wireshark_Release_Notes.adoc" CONVERT_UNDERSCORES)
- ASCIIDOCTOR2HTML("Stratoshark_Release_Notes.adoc" CONVERT_UNDERSCORES)
- ASCIIDOCTOR2TXT("Stratoshark_Release_Notes.adoc" CONVERT_UNDERSCORES)
+ set(RELEASE_NOTES_HTML "${CMAKE_CURRENT_BINARY_DIR}/Wireshark Release Notes.html")
+
+ # Only the release notes for something that was built.
+ if(BUILD_stratoshark)
+ ASCIIDOCTOR2HTML("Stratoshark_Release_Notes.adoc" CONVERT_UNDERSCORES)
+ list(APPEND RELEASE_NOTES_HTML "${CMAKE_CURRENT_BINARY_DIR}/Stratoshark Release Notes.html")
+ endif()
add_custom_target(release_notes_html
DEPENDS
- "${CMAKE_CURRENT_BINARY_DIR}/Wireshark Release Notes.html"
- "${CMAKE_CURRENT_BINARY_DIR}/Stratoshark Release Notes.html"
+ ${RELEASE_NOTES_HTML}
)
set_target_properties(release_notes_html PROPERTIES FOLDER "Documentation")
@@ -166,8 +212,7 @@ if(ASCIIDOCTOR_FOUND)
install(
FILES
${HTML_INSTALL_FILES}
- "${CMAKE_CURRENT_BINARY_DIR}/Wireshark Release Notes.html"
- "${CMAKE_CURRENT_BINARY_DIR}/Stratoshark Release Notes.html"
+ ${RELEASE_NOTES_HTML}
DESTINATION
${CMAKE_INSTALL_DOCDIR}
COMPONENT "ReleaseNotes"
diff --git a/packaging/debian/stratoshark.manpages b/packaging/debian/stratoshark.manpages
index 4f27313b47..f13fa2d55d 100644
--- a/packaging/debian/stratoshark.manpages
+++ b/packaging/debian/stratoshark.manpages
@@ -1,2 +1,3 @@
usr/share/man/man1/strato.1
usr/share/man/man1/stratoshark.1
+usr/share/man/man1/sshdig.1
diff --git a/packaging/debian/wireshark-common.manpages b/packaging/debian/wireshark-common.manpages
index 9c7ce5956c..974e970e28 100644
--- a/packaging/debian/wireshark-common.manpages
+++ b/packaging/debian/wireshark-common.manpages
@@ -13,7 +13,6 @@ obj-*/doc/man_pages/androiddump.1
obj-*/doc/man_pages/ciscodump.1
obj-*/doc/man_pages/randpktdump.1
obj-*/doc/man_pages/udpdump.1
-obj-*/doc/man_pages/sshdig.1
obj-*/doc/man_pages/sshdump.1
obj-*/doc/man_pages/wifidump.1
obj-*/doc/man_pages/extcap.4

View file

@ -1,164 +0,0 @@
diff --git a/capinfos.c b/capinfos.c
index 3c7866befd..da576f88c5 100644
--- a/capinfos.c
+++ b/capinfos.c
@@ -141,7 +141,6 @@ static gboolean cap_file_hashes = TRUE; /* Calculate file hashes */
// Strongest to weakest
#define HASH_SIZE_SHA256 32
-#define HASH_SIZE_RMD160 20
#define HASH_SIZE_SHA1 20
#define HASH_STR_SIZE (65) /* Max hash size * 2 + '\0' */
@@ -743,7 +742,6 @@ 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);
printf ("SHA1: %s\n", file_sha1);
}
if (cap_order) printf ("Strict time order: %s\n", order_string(cf_info->order));
@@ -857,7 +855,6 @@ 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");
print_stats_table_header_label("SHA1");
}
if (cap_order) print_stats_table_header_label("Strict time order");
@@ -1182,7 +1179,6 @@ calculate_hashes(const char *filename)
}
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);
hash_to_str(gcry_md_read(hd, GCRY_MD_SHA1), HASH_SIZE_SHA1, file_sha1);
}
if (fh) fclose(fh);
@@ -1489,7 +1485,7 @@ 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, RIPEMD160, and SHA1 hashes of the file\n");
+ fprintf(output, " -H display the SHA256 and SHA1 hashes of the file\n");
fprintf(output, " -k display the capture comment\n");
fprintf(output, "\n");
fprintf(output, "Size infos:\n");
@@ -1842,10 +1838,9 @@ main(int argc, char *argv[])
if (cap_file_hashes) {
gcry_check_version(NULL);
gcry_md_open(&hd, GCRY_MD_SHA256, 0);
- if (hd) {
- gcry_md_enable(hd, GCRY_MD_RMD160);
+ if (hd)
gcry_md_enable(hd, GCRY_MD_SHA1);
- }
+
hash_buf = (char *)g_malloc(HASH_BUF_SIZE);
}
diff --git a/doc/capinfos.adoc b/doc/capinfos.adoc
index 16ed2e300a..124fb56694 100644
--- a/doc/capinfos.adoc
+++ b/doc/capinfos.adoc
@@ -200,7 +200,7 @@ Prints the help listing and exits.
-H::
+
--
-Displays the SHA256, RIPEMD160, and SHA1 hashes for the file.
+Displays the SHA256 and SHA1 hashes for the file.
SHA1 output may be removed in the future.
--
diff --git a/capinfos.c b/capinfos.c
index f0059f4e54..e153097219 100644
--- a/capinfos.c
+++ b/capinfos.c
@@ -148,7 +148,6 @@ static gboolean cap_file_hashes = TRUE; /* Calculate file hashes */
static gchar file_sha256[HASH_STR_SIZE];
-static gchar file_rmd160[HASH_STR_SIZE];
static gchar file_sha1[HASH_STR_SIZE];
static char *hash_buf = NULL;
@@ -1024,11 +1023,6 @@ print_stats_table(const gchar *filename, capture_info *cf_info)
printf("%s", file_sha256);
putquote();
- putsep();
- putquote();
- printf("%s", file_rmd160);
- putquote();
-
putsep();
putquote();
printf("%s", file_sha1);
@@ -1168,7 +1162,6 @@ calculate_hashes(const char *filename)
size_t hash_bytes;
(void) g_strlcpy(file_sha256, "<unknown>", HASH_STR_SIZE);
- (void) g_strlcpy(file_rmd160, "<unknown>", HASH_STR_SIZE);
(void) g_strlcpy(file_sha1, "<unknown>", HASH_STR_SIZE);
if (cap_file_hashes) {
diff --git a/ui/qt/capture_file_properties_dialog.cpp b/ui/qt/capture_file_properties_dialog.cpp
index 9e5b86a7fd..c77056818c 100644
--- a/ui/qt/capture_file_properties_dialog.cpp
+++ b/ui/qt/capture_file_properties_dialog.cpp
@@ -175,11 +175,6 @@ QString CaptureFilePropertiesDialog::summaryToHtml()
<< table_data_tmpl.arg(summary.file_sha256)
<< table_row_end;
- out << table_row_begin
- << table_vheader_tmpl.arg(tr("Hash (RIPEMD160)"))
- << table_data_tmpl.arg(summary.file_rmd160)
- << table_row_end;
-
out << table_row_begin
<< table_vheader_tmpl.arg(tr("Hash (SHA1)"))
<< table_data_tmpl.arg(summary.file_sha1)
diff --git a/ui/summary.c b/ui/summary.c
index 127698fd5c..58c7cd68a4 100644
--- a/ui/summary.c
+++ b/ui/summary.c
@@ -21,7 +21,6 @@
// Strongest to weakest
#define HASH_SIZE_SHA256 32
-#define HASH_SIZE_RMD160 20
#define HASH_SIZE_SHA1 20
#define HASH_BUF_SIZE (1024 * 1024)
@@ -213,12 +212,10 @@ summary_fill_in(capture_file *cf, summary_tally *st)
g_free(idb_info);
(void) g_strlcpy(st->file_sha256, "<unknown>", HASH_STR_SIZE);
- (void) g_strlcpy(st->file_rmd160, "<unknown>", HASH_STR_SIZE);
(void) g_strlcpy(st->file_sha1, "<unknown>", HASH_STR_SIZE);
gcry_md_open(&hd, GCRY_MD_SHA256, 0);
if (hd) {
- gcry_md_enable(hd, GCRY_MD_RMD160);
gcry_md_enable(hd, GCRY_MD_SHA1);
}
hash_buf = (char *)g_malloc(HASH_BUF_SIZE);
@@ -230,7 +227,6 @@ summary_fill_in(capture_file *cf, summary_tally *st)
}
gcry_md_final(hd);
hash_to_str(gcry_md_read(hd, GCRY_MD_SHA256), HASH_SIZE_SHA256, st->file_sha256);
- hash_to_str(gcry_md_read(hd, GCRY_MD_RMD160), HASH_SIZE_RMD160, st->file_rmd160);
hash_to_str(gcry_md_read(hd, GCRY_MD_SHA1), HASH_SIZE_SHA1, st->file_sha1);
}
if (fh) fclose(fh);
diff --git a/ui/summary.h b/ui/summary.h
index 9063b99b77..95a51a38c0 100644
--- a/ui/summary.h
+++ b/ui/summary.h
@@ -56,7 +56,6 @@ typedef struct _summary_tally {
const char *filename; /**< path of capture file */
gint64 file_length; /**< file length in bytes */
gchar file_sha256[HASH_STR_SIZE]; /**< SHA256 hash of capture file */
- gchar file_rmd160[HASH_STR_SIZE]; /**< RIPEMD160 hash of capture file */
gchar file_sha1[HASH_STR_SIZE]; /**< SHA1 hash of capture file */
int file_type; /**< wiretap file type */
wtap_compression_type compression_type; /**< compression type of file, or uncompressed */

View file

@ -1,12 +1,15 @@
%undefine __cmake_in_source_build
%global with_lua 1
%global with_maxminddb 1
%global plugins_version 4.0
%global with_pytools 1
%global plugins_version 4.6
%bcond http3 %[0%{?fedora} >= 43]
Summary: Network traffic analyzer
Name: wireshark
Version: 4.0.7
Release: 3%{?dist}
Version: 4.6.8
Release: 1%{?dist}
Epoch: 1
License: BSD-1-Clause AND BSD-2-Clause AND BSD-3-Clause AND MIT AND GPL-2.0-or-later AND LGPL-2.0-or-later AND Zlib AND ISC AND (BSD-3-Clause OR GPL-2.0-only) AND (GPL-2.0-or-later AND Zlib)
Url: http://www.wireshark.org/
@ -18,18 +21,10 @@ Source3: wireshark.sysusers
# Fedora-specific
Patch2: wireshark-0002-Customize-permission-denied-error.patch
# Will be proposed upstream
Patch3: wireshark-0003-fix-string-overrun-in-plugins-profinet.patch
# Fedora-specific
Patch4: wireshark-0004-Restore-Fedora-specific-groups.patch
# Fedora-specific
Patch5: wireshark-0005-Fix-paths-in-a-wireshark.desktop-file.patch
# Fedora-specific
Patch6: wireshark-0006-Move-tmp-to-var-tmp.patch
Patch7: wireshark-0007-cmakelists.patch
Patch8: wireshark-0008-glib2-g_strdup-build.patch
Patch9: wireshark-0009-fix-asn2wrs-cmake.patch
Patch10: wireshark-0010-ripemd-fips-core-dump.patch
# Proposed upstream - https://gitlab.com/wireshark/wireshark/-/merge_requests/26425
Patch9: wireshark-0009-remove-strato-manpages.patch
#install tshark together with wireshark GUI
Requires: %{name}-cli = %{epoch}:%{version}-%{release}
@ -70,21 +65,40 @@ BuildRequires: qt6-qtbase-devel
BuildRequires: qt6-qt5compat-devel
BuildRequires: qt6-qtmultimedia-devel
BuildRequires: qt6-qtsvg-devel
BuildRequires: qt6-qtimageformats
BuildRequires: zlib-devel
BuildRequires: asciidoctor
%if %{with_maxminddb} && 0%{?fedora}
BuildRequires: libmaxminddb-devel
%endif
%if %{with_lua} && 0%{?fedora}
BuildRequires: compat-lua-devel
BuildRequires: lua-devel
%endif
Buildrequires: git-core
Buildrequires: python3-devel
Buildrequires: cmake
Buildrequires: git-core
Buildrequires: python3-devel
Buildrequires: cmake
Buildrequires: speexdsp-devel
#needed for sdjournal external capture interface
BuildRequires: systemd-devel
BuildRequires: libnghttp2-devel
BuildRequires: systemd-rpm-macros
BuildRequires: systemd-devel
BuildRequires: libnghttp2-devel
%if %{with http3}
BuildRequires: libnghttp3-devel
%endif
BuildRequires: systemd-rpm-macros
BuildRequires: lz4-devel
BuildRequires: snappy-devel
BuildRequires: brotli-devel
BuildRequires: opus-devel
BuildRequires: sbc-devel
%if 0%{?fedora}
BuildRequires: ilbc-devel
BuildRequires: opencore-amr-devel
# bcg729 for G.729
BuildRequires: bcg729-devel
# spandsp for G.722 and G.726
BuildRequires: spandsp-devel
# wireshark needs the -compat package
%endif
%description
@ -100,7 +114,6 @@ transferred over HTTP or CIFS, or play back an RTP audio stream.
%package cli
Summary: Network traffic analyzer
Requires(pre): shadow-utils
%description cli
This package contains command-line utilities, plugins, and documentation for
@ -112,6 +125,10 @@ Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: %{name}-cli = %{epoch}:%{version}-%{release}
Requires: glibc-devel
Requires: glib2-devel
%if %{with_pytools} && 0%{?fedora}
Requires: python3-ply
Requires: omniORB-devel
%endif
%description devel
The wireshark-devel package contains the header files, developer
@ -143,55 +160,49 @@ and plugins.
-DENABLE_PLUGINS=ON \
-DENABLE_NETLINK=ON \
-DBUILD_dcerpcidl2wrs=OFF \
-DBUILD_sdjournal=ON
-DBUILD_sdjournal=ON \
-DBUILD_stratoshark=OFF
%cmake_build
%install
%cmake_install
%cmake_install --component Development
desktop-file-validate %{buildroot}%{_datadir}/applications/org.wireshark.Wireshark.desktop
#install devel files (inspired by debian/wireshark-dev.header-files)
install -d -m 0755 %{buildroot}%{_includedir}/wireshark
install -m 0644 %{__cmake_builddir}/config.h %{buildroot}%{_includedir}/wireshark/config.h
IDIR="%{buildroot}%{_includedir}/wireshark"
mkdir -p "${IDIR}/epan"
mkdir -p "${IDIR}/epan/crypt"
mkdir -p "${IDIR}/epan/ftypes"
mkdir -p "${IDIR}/epan/dfilter"
mkdir -p "${IDIR}/epan/dissectors"
mkdir -p "${IDIR}/epan/wmem"
mkdir -p "${IDIR}/wiretap"
mkdir -p "${IDIR}/wsutil"
mkdir -p %{buildroot}%{_udevrulesdir}
install -m 644 %{_vpath_builddir}/config.h epan/register.h "${IDIR}/"
install -m 644 cfile.h file.h "${IDIR}/"
install -m 644 epan/*.h "${IDIR}/epan/"
install -m 644 epan/crypt/*.h "${IDIR}/epan/crypt"
install -m 644 epan/ftypes/*.h "${IDIR}/epan/ftypes"
install -m 644 epan/dfilter/*.h "${IDIR}/epan/dfilter"
install -m 644 epan/dissectors/*.h "${IDIR}/epan/dissectors"
install -m 644 wiretap/*.h "${IDIR}/wiretap"
install -m 644 wsutil/*.h "${IDIR}/wsutil"
install -m 644 include/ws_symbol_export.h "${IDIR}/"
install -m 644 include/ws_diag_control.h "${IDIR}/"
install -m 644 %{SOURCE2} %{buildroot}%{_udevrulesdir}
install -Dpm 644 %{SOURCE3} %{buildroot}%{_sysusersdir}/%{name}.conf
install -m 0644 %{SOURCE2} %{buildroot}%{_udevrulesdir}
install -Dpm 0644 %{SOURCE3} %{buildroot}%{_sysusersdir}/%{name}.conf
%if %{with_pytools} && 0%{?fedora}
#install asn2wrs.py, idl2wrs and make-plugin-reg.py tools
mkdir -p %{buildroot}%{_libexecdir}/wireshark/pytools
install -m 0755 tools/asn2wrs.py %{buildroot}%{_libexecdir}/wireshark/pytools/
install -m 0755 tools/make-plugin-reg.py %{buildroot}%{_libexecdir}/wireshark/pytools/
install -m 0755 tools/idl2wrs %{buildroot}%{_libexecdir}/wireshark/pytools/
#install idl2wrs dependent scripts
install -m 0644 tools/wireshark_be.py %{buildroot}%{_libexecdir}/wireshark/pytools/
install -m 0644 tools/wireshark_gen.py %{buildroot}%{_libexecdir}/wireshark/pytools/
%endif
touch %{buildroot}%{_bindir}/%{name}
# Remove libtool archives and static libs
find %{buildroot} -type f -name "*.la" -delete
%pre cli
%sysusers_create_compat %{SOURCE3}
%post cli
%{?ldconfig}
# skip triggering if udevd isn't even accessible, e.g. containers or
# rpm-ostree-based systems
if [ -S /run/udev/control ]; then
/usr/bin/udevadm trigger --subsystem-match=usbmon
/usr/bin/udevadm trigger --subsystem-match=usbmon || :
fi
%ldconfig_postun cli
@ -207,10 +218,11 @@ fi
%files cli
%license COPYING
%doc AUTHORS INSTALL NEWS README*
%doc AUTHORS INSTALL README*
%{_bindir}/capinfos
%{_bindir}/captype
%{_bindir}/editcap
%{_bindir}/dftest
%{_bindir}/mergecap
%{_bindir}/randpkt
%{_bindir}/reordercap
@ -224,18 +236,17 @@ fi
%{_bindir}/rawshark
%{_udevrulesdir}/90-wireshark-usbmon.rules
%{_libdir}/lib*.so.*
%dir %{_libdir}/wireshark
%dir %{_libdir}/wireshark/extcap
%dir %{_libexecdir}/wireshark
%dir %{_libexecdir}/wireshark/extcap
%dir %{_libdir}/wireshark/plugins
%{_libdir}/wireshark/extcap/ciscodump
%{_libdir}/wireshark/extcap/udpdump
%{_libdir}/wireshark/extcap/wifidump
%{_libdir}/wireshark/extcap/sshdump
%{_libdir}/wireshark/extcap/sdjournal
%{_libdir}/wireshark/extcap/dpauxmon
%{_libdir}/wireshark/extcap/androiddump
%dir %{_libdir}/wireshark/cmake
%{_libdir}/wireshark/cmake/*.cmake
%dir %{_libdir}/wireshark
%{_libexecdir}/wireshark/extcap/ciscodump
%{_libexecdir}/wireshark/extcap/udpdump
%{_libexecdir}/wireshark/extcap/wifidump
%{_libexecdir}/wireshark/extcap/sshdump
%{_libexecdir}/wireshark/extcap/sdjournal
%{_libexecdir}/wireshark/extcap/dpauxmon
%{_libexecdir}/wireshark/extcap/androiddump
#the version wireshark uses to store plugins is only x.y, not .z
%dir %{_libdir}/wireshark/plugins/%{plugins_version}
%dir %{_libdir}/wireshark/plugins/%{plugins_version}/epan
@ -252,7 +263,6 @@ fi
%{_mandir}/man1/dumpcap.*
%{_mandir}/man4/wireshark-filter.*
%{_mandir}/man1/rawshark.*
%{_mandir}/man1/dftest.*
%{_mandir}/man1/randpkt.*
%{_mandir}/man1/reordercap.*
%{_mandir}/man1/sshdump.*
@ -261,11 +271,12 @@ fi
%{_mandir}/man1/androiddump.*
%{_mandir}/man1/captype.*
%{_mandir}/man1/ciscodump.*
%{_mandir}/man1/randpktdump.*
%{_mandir}/man1/dpauxmon.*
%{_mandir}/man1/sdjournal.*
%{_mandir}/man1/etwdump.*
%{_mandir}/man1/sharkd.*
%{_mandir}/man4/extcap.*
%{_datadir}/doc/wireshark/*
%if %{with_maxminddb} && 0%{?fedora}
%{_mandir}/man1/mmdbresolve.*
%endif
@ -275,11 +286,159 @@ fi
%files devel
%doc doc/README.* ChangeLog
%{_includedir}/wireshark
%dir %{_includedir}/wireshark
%{_includedir}/wireshark/*
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/%{name}.pc
%{_libdir}/cmake/%{name}/*.cmake
%if %{with_pytools} && 0%{?fedora}
%dir %{_libexecdir}/wireshark/pytools
%{_libexecdir}/wireshark/pytools/*.py
%{_libexecdir}/wireshark/pytools/idl2wrs
%endif
%changelog
* Wed Sep 9 2026 Peter Lemenkov <lemenkov@gmail.com> - 1:4.6.8-1
- New version 4.6.8
* Tue Sep 08 2026 Peter Lemenkov <lemenkov@gmail.com> - 1:4.6.7-3
- Rewrite the /var/tmp patch to set TMPDIR in configuration_init() rather
than add wsutil/wstmpdir.{c,h} and rewrite create_tempfile(). TMPDIR is
read by GLib, by Qt and by child processes such as dumpcap, so one
default now covers every temporary file instead of three of the roughly
seventeen places that ask for a temporary directory
- Drop wireshark-0007-cmakelists.patch, which existed only to build the
files the rewrite removes
- Drop the stray wireshark-0003 patch, applied upstream in 0bc06ec1086 and
unreferenced by the spec since 4.6.0
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.6.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Tue Jul 14 2026 Michal Ruprich <mruprich@redhat.com> - 1:4.6.7-1
- New version 4.6.7
* Sat Jun 13 2026 Yaakov Selkowitz <yselkowi@redhat.com> - 1:4.6.6-2
- Rebuilt for openssl 4.0
* Mon Jun 01 2026 Michal Ruprich <mruprich@redhat.com> - 1:4.6.6-1
- New version 4.6.6
* Wed Mar 11 2026 Michal Ruprich <mruprich@redhat.com> - 1:4.6.4-2
- Python tools should only be shipped in Fedora
* Wed Mar 04 2026 Michal Ruprich <mruprich@redhat.com> - 1:4.6.4-1
- New version 4.6.4
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.6.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Thu Jan 15 2026 Michal Ruprich <mruprich@redhat.com> - 1:4.6.3-1
- New version 4.6.3
* Thu Dec 11 2025 Yaakov Selkowitz <yselkowi@redhat.com> - 1:4.6.1-3
- Enable HTTP/3 support on F43+ only
* Tue Dec 09 2025 Alexey Kurov <nucleo@fedoraproject.org> - 1:4.6.1-2
- BuildRequires: libnghttp3-devel - needed for HTTP3 support
* Thu Nov 27 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.6.1-1
- New version 4.6.1
* Thu Oct 09 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.6.0-1
- New version 4.6.0
* Mon Sep 01 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.9-1
- New version 4.4.9
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.4.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Fri Jul 18 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.8-1
- New version 4.4.8
* Thu Jun 05 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.7-1
- New version 4.4.7
* Tue Jun 03 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.6-2
- udevadm should be ignored if an error occures
* Mon May 26 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.6-1
- New version 4.4.6
* Tue Mar 18 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.5-1
- New version 4.4.5
* Thu Feb 20 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.4-1
- New version 4.4.4
* Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:4.4.3-2
- Drop call to %sysusers_create_compat
* Wed Jan 22 2025 Michal Ruprich <mruprich@redhat.com> - 1:4.4.3-1
- New version 4.4.3
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.4.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Thu Nov 21 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.4.2-1
- New version 4.4.2
* Thu Oct 10 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.4.1-1
- New version 4.4.1
* Fri Sep 20 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.4.0-2
- Using cmake install for development headers and .cmake files
* Thu Aug 29 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.4.0-1
- New version 4.4.0
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.2.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu Jul 11 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.2.6-1
- New version 4.2.6
* Fri May 24 2024 Neal Gompa <ngompa@fedoraproject.org> - 1:4.2.5-2
- Rebuild (Qt6)
* Wed May 22 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.2.5-1
- New version 4.2.5
* Tue May 21 2024 Jan Grulich <jgrulich@redhat.com> - 1:4.2.4-3
- Rebuild (qt6)
* Sat May 04 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.2.4-2
- Enabling additional features (rhbz#2278136)
* Mon Apr 08 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.2.4-1
- New version 4.2.4
* Thu Apr 04 2024 Jan Grulich <jgrulich@redhat.com> - 1:4.2.3-2
- Rebuild (qt6)
* Tue Mar 12 2024 Marie Loise Nolden <loise@kde.org> - 1:4.2.3-1
- New version 4.2.3-1
* Sun Feb 18 2024 Yaakov Selkowitz <yselkowi@redhat.com> - 1:4.2.2-3
- Install more devel headers
* Sun Feb 11 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.2.2-2
- Making sure that wireshark.pc is created and installed
* Thu Feb 01 2024 Michal Ruprich <mruprich@redhat.com> - 1:4.2.2-1
- New version 4.2.2
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.0.8-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Aug 31 2023 Michal Ruprich <mruprich@redhat.com> - 1:4.0.8-2
- Resolves: #2236246 - wireshark crash in managed interfaces
* Tue Aug 29 2023 Michal Ruprich <mruprich@redhat.com> - 1:4.0.8-1
- New version 4.0.8
- Resolves: #2235577 - possible Denial of Service via crafted package
* Fri Jul 28 2023 Michal Ruprich <mruprich@redhat.com> - 1:4.0.7-3
- Resolves: #2227004 - capinfos aborts in FIPS