The debuginfo installer currently expects both build-ids and user input from a
pipe with analaze-core, when run from an UI.
We need to change it so that it passes the build-ids through a temporary file
and only uses stdin to communicate with the user.
Also makes the output file from analyze-core readable for others.

Signed-off-by: Petr Kubat <pku...@redhat.com>
---
 src/plugins/abrt-action-analyze-ccpp-local | 5 +++--
 src/plugins/abrt-action-analyze-core       | 3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/plugins/abrt-action-analyze-ccpp-local 
b/src/plugins/abrt-action-analyze-ccpp-local
index 0b02684..ef0976e 100755
--- a/src/plugins/abrt-action-analyze-ccpp-local
+++ b/src/plugins/abrt-action-analyze-ccpp-local
@@ -24,10 +24,11 @@ if $INSTALL_DI; then
     # debuginfo install fail even for root.
     # Therefore, if we are root, we don't use the wrapper.
     if [ x"`id -u`" = x"0" ]; then
-        abrt-action-analyze-core --core=coredump | 
abrt-action-install-debuginfo --ids=- --size_mb=4096
+        abrt-action-analyze-core --core=coredump -o build_ids && 
abrt-action-install-debuginfo --size_mb=4096
     else
-        abrt-action-analyze-core --core=coredump | 
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache --ids=- --size_mb=4096
+        abrt-action-analyze-core --core=coredump -o build_ids && 
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache --size_mb=4096
     fi
+    rm -f build_ids
 fi
 
 if [ $? = 0 ]; then
diff --git a/src/plugins/abrt-action-analyze-core 
b/src/plugins/abrt-action-analyze-core
index dc1eee2..806cc26 100644
--- a/src/plugins/abrt-action-analyze-core
+++ b/src/plugins/abrt-action-analyze-core
@@ -171,12 +171,15 @@ if __name__ == "__main__":
         # when we are definitely going to write something to it
         outfile = sys.stdout
         outname = opt_o
+        # Make sure the file is readable for all
+        oldmask = os.umask(0002)
         for bid in b_ids:
             if outname:
                 outfile = xopen(outname, "w")
                 outname = None
             outfile.write("%s\n" % bid)
         outfile.close()
+        os.umask(oldmask)
     except IOError, e:
         if not opt_o:
             opt_o = "<stdout>"
-- 
1.7.11.7

Reply via email to