|
Matej Habrnal |
bcf6f2 |
From 578317a67c0f30469c28752ea2f40ae87a1a356c Mon Sep 17 00:00:00 2001
|
|
Matej Habrnal |
bcf6f2 |
From: Matej Habrnal <mhabrnal@redhat.com>
|
|
Matej Habrnal |
bcf6f2 |
Date: Wed, 21 Feb 2018 16:14:36 +0100
|
|
Matej Habrnal |
bcf6f2 |
Subject: [PATCH] a-container-logger: workaround permission issue in minishift
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
This workarounds the following issue:
|
|
Matej Habrnal |
bcf6f2 |
https://github.com/minishift/minishift/issues/2058
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
|
Matej Habrnal |
bcf6f2 |
---
|
|
Matej Habrnal |
bcf6f2 |
src/plugins/abrt-container-logger.c | 27 +++++++++++++++++++++++----
|
|
Matej Habrnal |
bcf6f2 |
1 file changed, 23 insertions(+), 4 deletions(-)
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
diff --git a/src/plugins/abrt-container-logger.c b/src/plugins/abrt-container-logger.c
|
|
Matej Habrnal |
bcf6f2 |
index 2f9488a3..df40f562 100644
|
|
Matej Habrnal |
bcf6f2 |
--- a/src/plugins/abrt-container-logger.c
|
|
Matej Habrnal |
bcf6f2 |
+++ b/src/plugins/abrt-container-logger.c
|
|
Matej Habrnal |
bcf6f2 |
@@ -15,6 +15,7 @@
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
#include <stdio.h>
|
|
Matej Habrnal |
bcf6f2 |
#include <unistd.h>
|
|
Matej Habrnal |
bcf6f2 |
+#include <sys/types.h>
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
#define INIT_PROC_STDERR_FD_PATH "/proc/1/fd/2"
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
@@ -25,7 +26,6 @@ int main(int argc, char *argv[])
|
|
Matej Habrnal |
bcf6f2 |
"\n"
|
|
Matej Habrnal |
bcf6f2 |
"\nThe tool reads from standard input and writes to '"INIT_PROC_STDERR_FD_PATH"'";
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
- /* the tool expects one parameter STR */
|
|
Matej Habrnal |
bcf6f2 |
if (argc > 1)
|
|
Matej Habrnal |
bcf6f2 |
{
|
|
Matej Habrnal |
bcf6f2 |
fprintf(stderr, "%s\n", program_usage_string);
|
|
Matej Habrnal |
bcf6f2 |
@@ -35,9 +35,27 @@ int main(int argc, char *argv[])
|
|
Matej Habrnal |
bcf6f2 |
FILE *f = fopen(INIT_PROC_STDERR_FD_PATH, "w");
|
|
Matej Habrnal |
bcf6f2 |
if (f == NULL)
|
|
Matej Habrnal |
bcf6f2 |
{
|
|
Matej Habrnal |
bcf6f2 |
- perror("Failed to open '"INIT_PROC_STDERR_FD_PATH"'");
|
|
Matej Habrnal |
bcf6f2 |
- return 2;
|
|
Matej Habrnal |
bcf6f2 |
+ perror("Failed to open '"INIT_PROC_STDERR_FD_PATH"' as root");
|
|
Matej Habrnal |
bcf6f2 |
+
|
|
Matej Habrnal |
bcf6f2 |
+ /* Try to open the 'INIT_PROC_STDERR_FD_PATH' as normal user because of
|
|
Matej Habrnal |
bcf6f2 |
+ https://github.com/minishift/minishift/issues/2058
|
|
Matej Habrnal |
bcf6f2 |
+ */
|
|
Matej Habrnal |
bcf6f2 |
+ if (seteuid(getuid()) == 0)
|
|
Matej Habrnal |
bcf6f2 |
+ {
|
|
Matej Habrnal |
bcf6f2 |
+ f = fopen(INIT_PROC_STDERR_FD_PATH, "w");
|
|
Matej Habrnal |
bcf6f2 |
+ if (f == NULL)
|
|
Matej Habrnal |
bcf6f2 |
+ {
|
|
Matej Habrnal |
bcf6f2 |
+ perror("Failed to open '"INIT_PROC_STDERR_FD_PATH"' as user");
|
|
Matej Habrnal |
bcf6f2 |
+ return 2;
|
|
Matej Habrnal |
bcf6f2 |
+ }
|
|
Matej Habrnal |
bcf6f2 |
+ }
|
|
Matej Habrnal |
bcf6f2 |
+ else
|
|
Matej Habrnal |
bcf6f2 |
+ {
|
|
Matej Habrnal |
bcf6f2 |
+ perror("Failed to setuid");
|
|
Matej Habrnal |
bcf6f2 |
+ return 3;
|
|
Matej Habrnal |
bcf6f2 |
+ }
|
|
Matej Habrnal |
bcf6f2 |
}
|
|
Matej Habrnal |
bcf6f2 |
+
|
|
Matej Habrnal |
bcf6f2 |
setvbuf (f, NULL, _IONBF, 0);
|
|
Matej Habrnal |
bcf6f2 |
|
|
Matej Habrnal |
bcf6f2 |
char buffer[BUFSIZ];
|
|
Matej Habrnal |
bcf6f2 |
@@ -52,7 +70,8 @@ int main(int argc, char *argv[])
|
|
Matej Habrnal |
bcf6f2 |
if (fwrite(buffer, bytes_read, 1, f) != 1)
|
|
Matej Habrnal |
bcf6f2 |
{
|
|
Matej Habrnal |
bcf6f2 |
perror("Failed to write to '"INIT_PROC_STDERR_FD_PATH"'");
|
|
Matej Habrnal |
bcf6f2 |
- return 3;
|
|
Matej Habrnal |
bcf6f2 |
+ fclose(f);
|
|
Matej Habrnal |
bcf6f2 |
+ return 4;
|
|
Matej Habrnal |
bcf6f2 |
}
|
|
Matej Habrnal |
bcf6f2 |
}
|
|
Matej Habrnal |
bcf6f2 |
fclose(f);
|
|
Matej Habrnal |
bcf6f2 |
--
|
|
Matej Habrnal |
bcf6f2 |
2.14.3
|
|
Matej Habrnal |
bcf6f2 |
|