Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package wireshark for openSUSE:Factory checked in at 2021-01-18 11:27:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wireshark (Old) and /work/SRC/openSUSE:Factory/.wireshark.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wireshark" Mon Jan 18 11:27:32 2021 rev:167 rq:863103 version:3.4.2 Changes: -------- --- /work/SRC/openSUSE:Factory/wireshark/wireshark.changes 2020-12-24 19:37:23.894950623 +0100 +++ /work/SRC/openSUSE:Factory/.wireshark.new.28504/wireshark.changes 2021-01-18 11:30:46.464511503 +0100 @@ -1,0 +2,6 @@ +Fri Jan 13 09:32:30 UTC 2021 - Robert Frohl <rfr...@suse.com> + +- provide helpful error message if user doesn't have permissions to run dumpcap (bsc#1180102) + add wireshark-0001-dumpcap-permission-denied.patch + +------------------------------------------------------------------- New: ---- wireshark-0001-dumpcap-permission-denied.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wireshark.spec ++++++ --- /var/tmp/diff_new_pack.2aybJq/_old 2021-01-18 11:30:47.456523936 +0100 +++ /var/tmp/diff_new_pack.2aybJq/_new 2021-01-18 11:30:47.460523986 +0100 @@ -1,7 +1,7 @@ # # spec file for package wireshark # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -36,6 +36,7 @@ Source: https://www.wireshark.org/download/src/%{name}-%{version}.tar.xz Source2: https://www.wireshark.org/download/SIGNATURES-%{version}.txt#/%{name}-%{version}.tar.xz.asc Source3: https://www.wireshark.org/download/gerald_at_wireshark_dot_org.gpg#/wireshark.keyring +Patch10: wireshark-0001-dumpcap-permission-denied.patch BuildRequires: bison BuildRequires: flex BuildRequires: glib2-devel >= 2.32 @@ -169,6 +170,7 @@ %setup -q sed -i 's/^Icon=wireshark.png$/Icon=wireshark/' wireshark*.desktop +%patch10 -p1 %build %cmake -DCMAKE_INSTALL_LIBDIR='%{_lib}/' ++++++ wireshark-0001-dumpcap-permission-denied.patch ++++++ commit 1865e02e6c22ee55b0bb11b8c78330d4e65a1132 Author: Robert Frohl <rfr...@suse.com> Date: Wed Jan 13 14:18:36 2021 +0100 Warn if user can't access dumpcap. diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c index f31914886a..d3baab6c50 100644 --- a/capchild/capture_sync.c +++ b/capchild/capture_sync.c @@ -21,6 +21,10 @@ #include <wsutil/strtoi.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <grp.h> + #ifdef _WIN32 #include <wsutil/unicode-utils.h> #include <wsutil/win32-utils.h> @@ -570,11 +574,22 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, inf * Child process - run dumpcap with the right arguments to make * it just capture with the specified capture parameters */ + char * grp_warning = calloc(1, 256); 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) { + struct stat statbuf; + struct group *grp; + if(stat("/usr/bin/dumpcap", &statbuf) == 0) { + if ((grp = getgrgid(statbuf.st_gid)) != NULL) { + snprintf(grp_warning , 256, "\nYou need to be a member of the '%s' group. Try running\n'usermod -a -G %s <YOUR_USERNAME>' as root.", grp->gr_name, grp->gr_name); + } + } + } + g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s%s", + argv[0], g_strerror(errno), grp_warning); + free(grp_warning); sync_pipe_errmsg_to_parent(2, errmsg, ""); /* Exit with "_exit()", so that we don't close the connection @@ -805,6 +820,7 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd, * Child process - run dumpcap with the right arguments to make * it just capture with the specified capture parameters */ + char * grp_warning = calloc(1, 256); dup2(data_pipe[PIPE_WRITE], 1); ws_close(data_pipe[PIPE_READ]); ws_close(data_pipe[PIPE_WRITE]); @@ -812,8 +828,18 @@ 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); - g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s", - argv[0], g_strerror(errno)); + if (errno == EPERM || errno == EACCES) { + struct stat statbuf; + struct group *grp; + if(stat("/usr/bin/dumpcap", &statbuf) == 0) { + if ((grp = getgrgid(statbuf.st_gid)) != NULL) { + snprintf(grp_warning , 256, "\nYou need to be a member of the '%s' group. Try running\n'usermod -a -G %s <YOUR_USERNAME>' as root.", grp->gr_name, grp->gr_name); + } + } + } + g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s%s", + argv[0], g_strerror(errno), grp_warning); + free(grp_warning); sync_pipe_errmsg_to_parent(2, errmsg, ""); /* Exit with "_exit()", so that we don't close the connection