diff options
| author | Robert Sesek <rsesek@chromium.org> | 2016-01-27 14:14:08 -0500 |
|---|---|---|
| committer | Robert Sesek <rsesek@chromium.org> | 2016-01-27 19:16:24 +0000 |
| commit | 0c97b34adb439d638986d50769cba543e6ad5056 (patch) | |
| tree | ad63f3c0458bbaba260dfd6c230af9404c2f845b | |
| parent | 9cb6b773d692650216f6dfb32c6b41943ee72c08 (diff) | |
| download | chromium_src-0c97b34adb439d638986d50769cba543e6ad5056.zip chromium_src-0c97b34adb439d638986d50769cba543e6ad5056.tar.gz chromium_src-0c97b34adb439d638986d50769cba543e6ad5056.tar.bz2 | |
[Linux] Do not try to call readdir() on a null DIR* in base::ProcessIterator.
BUG=581517
R=thakis@chromium.org
Review URL: https://codereview.chromium.org/1642663003 .
Cr-Commit-Position: refs/heads/master@{#371837}
| -rw-r--r-- | base/process/process_iterator_linux.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/base/process/process_iterator_linux.cc b/base/process/process_iterator_linux.cc index 94a3576..421565f 100644 --- a/base/process/process_iterator_linux.cc +++ b/base/process/process_iterator_linux.cc @@ -61,18 +61,28 @@ bool GetProcCmdline(pid_t pid, std::vector<std::string>* proc_cmd_line_args) { ProcessIterator::ProcessIterator(const ProcessFilter* filter) : filter_(filter) { procfs_dir_ = opendir(internal::kProcDir); + if (!procfs_dir_) { + // On Android, SELinux may prevent reading /proc. See + // https://crbug.com/581517 for details. + PLOG(ERROR) << "opendir " << internal::kProcDir; + } } ProcessIterator::~ProcessIterator() { if (procfs_dir_) { closedir(procfs_dir_); - procfs_dir_ = NULL; + procfs_dir_ = nullptr; } } bool ProcessIterator::CheckForNextProcess() { // TODO(port): skip processes owned by different UID + if (!procfs_dir_) { + DLOG(ERROR) << "Skipping CheckForNextProcess(), no procfs_dir_"; + return false; + } + pid_t pid = kNullProcessId; std::vector<std::string> cmd_line_args; std::string stats_data; |
