diff --git a/debuggerd/tombstoned/tombstoned.cpp b/debuggerd/tombstoned/tombstoned.cpp index e79035f51..98eb003e3 100644 --- a/debuggerd/tombstoned/tombstoned.cpp +++ b/debuggerd/tombstoned/tombstoned.cpp @@ -156,6 +156,11 @@ class CrashQueue { result.temporary_path = std::move(tmp_filename); } + // We need to fchmodat after creating to avoid getting the umask applied. + std::string fd_path = StringPrintf("/proc/self/fd/%d", result.fd.get()); + if (fchmodat(dir_fd_, fd_path.c_str(), 0664, 0) != 0) { + PLOG(ERROR) << "Failed to make tombstone world-readable"; + } return std::move(result); } diff --git a/rootdir/init.rc b/rootdir/init.rc index f3b2d0379..3c367f969 100644 --- a/rootdir/init.rc +++ b/rootdir/init.rc @@ -709,7 +709,7 @@ on post-fs-data # Start tombstoned early to be able to store tombstones. mkdir /data/anr 0775 system system encryption=Require - mkdir /data/tombstones 0771 system system encryption=Require + mkdir /data/tombstones 0775 system system encryption=Require mkdir /data/vendor/tombstones 0771 root root mkdir /data/vendor/tombstones/wifi 0771 wifi wifi start tombstoned