wireshark/wireshark-0002-Customize-permission-denied-error.patch

56 lines
2.7 KiB
Diff
Raw Normal View History

From: Jan Safranek <jsafrane@redhat.com>
Date: Fri, 26 Nov 2010 14:30:45 +0300
Subject: [PATCH] Customize 'permission denied' error.
2010-11-26 13:30:45 +00:00
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
2022-10-06 04:30:26 +00:00
index 47a30a70c4..84d19568b0 100644
--- a/capture/capture_sync.c
+++ b/capture/capture_sync.c
2022-10-06 04:30:26 +00:00
@@ -336,6 +336,7 @@ sync_pipe_start(capture_options *capture_opts, GPtrArray *capture_comments,
2010-11-26 13:30:45 +00:00
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
2022-10-06 04:30:26 +00:00
@@ -741,8 +742,10 @@ sync_pipe_start(capture_options *capture_opts, GPtrArray *capture_comments,
2012-06-25 13:46:28 +00:00
dup2(sync_pipe[PIPE_WRITE], 2);
ws_close(sync_pipe[PIPE_READ]);
2013-06-17 13:19:18 +00:00
execv(argv[0], argv);
2022-10-06 04:30:26 +00:00
- snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
2012-06-25 13:46:28 +00:00
- argv[0], g_strerror(errno));
+ if (errno == EPERM || errno == EACCES)
2022-10-06 04:30:26 +00:00
+ 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);
2012-06-25 13:46:28 +00:00
sync_pipe_errmsg_to_parent(2, errmsg, "");
2010-11-26 13:30:45 +00:00
2012-06-25 13:46:28 +00:00
/* Exit with "_exit()", so that we don't close the connection
2022-10-06 04:30:26 +00:00
@@ -846,6 +849,7 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd,
int i;
2010-11-26 13:30:45 +00:00
#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
2022-10-06 04:30:26 +00:00
@@ -994,8 +998,10 @@ sync_pipe_open_command(char* const argv[], int *data_read_fd,
2010-11-26 13:30:45 +00:00
ws_close(sync_pipe[PIPE_READ]);
ws_close(sync_pipe[PIPE_WRITE]);
2013-06-17 13:19:18 +00:00
execv(argv[0], argv);
2022-10-06 04:30:26 +00:00
- snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
2011-07-21 09:20:56 +00:00
- argv[0], g_strerror(errno));
2022-10-06 04:30:26 +00:00
+ 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);
2010-11-26 13:30:45 +00:00
sync_pipe_errmsg_to_parent(2, errmsg, "");
/* Exit with "_exit()", so that we don't close the connection