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

Reply via email to