diff options
author | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-03-24 20:59:31 +0100 |
---|---|---|
committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-03-24 20:59:31 +0100 |
commit | 38d14ec4d7ec62ff29fa5636d3462c3ae297e917 (patch) | |
tree | 87b4972c7304be3be4454003774b1020c224b3e5 /src/daemon/MiddleWare.cpp | |
parent | 14e071507d45f1c1668ddf569b0f285e21ea36b3 (diff) | |
download | abrt-38d14ec4d7ec62ff29fa5636d3462c3ae297e917.tar.gz abrt-38d14ec4d7ec62ff29fa5636d3462c3ae297e917.tar.xz abrt-38d14ec4d7ec62ff29fa5636d3462c3ae297e917.zip |
extend dump_dir to allow creating world-readable directory
- so far used only by kerneloops
Diffstat (limited to 'src/daemon/MiddleWare.cpp')
-rw-r--r-- | src/daemon/MiddleWare.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/daemon/MiddleWare.cpp b/src/daemon/MiddleWare.cpp index 77e18b0a..9bbd2af3 100644 --- a/src/daemon/MiddleWare.cpp +++ b/src/daemon/MiddleWare.cpp @@ -768,15 +768,21 @@ int DeleteDebugDump(const char *dump_dir_name, long caller_uid) char caller_uid_str[sizeof(long) * 3 + 2]; sprintf(caller_uid_str, "%ld", caller_uid); - char *uid = dd_load_text(dd, FILENAME_UID); - if (strcmp(uid, caller_uid_str) != 0) + char *uid = dd_load_text_ext(dd, FILENAME_UID, DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE); + /* we assume that the dump_dir can be handled by everyone if uid == NULL + * e.g: kerneloops + */ + if (uid != NULL) { - char *inform_all = dd_load_text_ext(dd, FILENAME_INFORMALL, DD_FAIL_QUIETLY_ENOENT); - if (!string_to_bool(inform_all)) + if (strcmp(uid, caller_uid_str) != 0) { - dd_close(dd); - error_msg("Dump directory '%s' can't be accessed by user with uid %ld", dump_dir_name, caller_uid); - return 1; + char *inform_all = dd_load_text_ext(dd, FILENAME_INFORMALL, DD_FAIL_QUIETLY_ENOENT); + if (!string_to_bool(inform_all)) + { + dd_close(dd); + error_msg("Dump directory '%s' can't be accessed by user with uid %ld", dump_dir_name, caller_uid); + return 1; + } } } } |