Discussion:
[ABRT PATCH] a-a-ureport: don't crash if cwd was deleted rhbz#998428
Richard Marko
2013-09-10 14:02:05 UTC
Permalink
Signed-off-by: Richard Marko <rmarko-H+wXaHxf7aLQT0dZR+***@public.gmane.org>
---
src/plugins/abrt-action-ureport | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/plugins/abrt-action-ureport b/src/plugins/abrt-action-ureport
index 44575d8..ecc03ee 100755
--- a/src/plugins/abrt-action-ureport
+++ b/src/plugins/abrt-action-ureport
@@ -54,7 +54,11 @@ if __name__ == "__main__":

set_verbosity(verbose)

- dirname = os.getcwd()
+ # getcwd might fail if cwd was deleted
+ try:
+ dirname = os.getcwd()
+ except OSError:
+ sys.exit(1)

dd = dd_opendir(dirname, 0)
if not dd:
--
1.8.3.1
Richard Marko
2013-09-10 14:29:58 UTC
Permalink
Now it won't crash when its working directory is deleted
or when it's not able to spawn a process or it tries to spawn
missing binary. It spits proper error message instead of exception.

Signed-off-by: Richard Marko <rmarko-H+wXaHxf7aLQT0dZR+***@public.gmane.org>
---
src/plugins/abrt-action-ureport | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/plugins/abrt-action-ureport b/src/plugins/abrt-action-ureport
index 44575d8..4fac62d 100755
--- a/src/plugins/abrt-action-ureport
+++ b/src/plugins/abrt-action-ureport
@@ -13,7 +13,12 @@ from report import dd_opendir, DD_FAIL_QUIETLY_ENOENT
from reportclient import _, set_verbosity, error_msg_and_die, error_msg, log1, log

def spawn_and_wait(prog):
- return os.spawnlp(os.P_WAIT, prog, prog)
+ try:
+ return os.spawnlp(os.P_WAIT, prog, prog)
+ except OSError as err:
+ error_msg(_("Unable to start '%s', error message was: '%s'"),
+ prog, err)
+ return -1

def try_parse_number(dd, filename):
try:
@@ -54,7 +59,12 @@ if __name__ == "__main__":

set_verbosity(verbose)

- dirname = os.getcwd()
+ # getcwd might fail if cwd was deleted
+ try:
+ dirname = os.getcwd()
+ except OSError as err:
+ error_msg_and_die(_("Unable to get current working directory as"
+ " it was probably deleted"))

dd = dd_opendir(dirname, 0)
if not dd:
@@ -111,3 +121,5 @@ if __name__ == "__main__":
dd.save_text("ureports_counter", str(ureports_counter + 1))
dd.close()
sys.exit(exitcode)
+ else:
+ error_msg_and_die("reporter-ureport failed with exit code %d" % exitcode)
--
1.8.3.1
Loading...