Don't call fdopendir on unique_fd::get. Transfer ownership by releasing first, instead of calling fdopendir on unique_fd::get() and then releasing afterwards, to allow for strict fd-ownership checks. Test: treehugger Change-Id: Idf8f107f8b6e4fc6bea03b9a9713d30b5c874f5a
diff --git a/services/vr/performanced/directory_reader.h b/services/vr/performanced/directory_reader.h index b9d27c3..f8359c4 100644 --- a/services/vr/performanced/directory_reader.h +++ b/services/vr/performanced/directory_reader.h
@@ -16,10 +16,11 @@ class DirectoryReader { public: explicit DirectoryReader(base::unique_fd directory_fd) { - directory_ = fdopendir(directory_fd.get()); + int fd = directory_fd.release(); + directory_ = fdopendir(fd); error_ = errno; - if (directory_ != nullptr) - (void) directory_fd.release(); // ignore return result? + if (directory_ == nullptr) + close(fd); } ~DirectoryReader() {