scoped_file.cc revision 0d205d712abd16eeed2f5d5b1052a367d23a223f
1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/files/scoped_file.h"
6
7#include "base/logging.h"
8#include "build/build_config.h"
9
10#if defined(OS_POSIX)
11#include <unistd.h>
12
13#include "base/posix/eintr_wrapper.h"
14#endif
15
16namespace base {
17namespace internal {
18
19#if defined(OS_POSIX)
20
21// static
22void ScopedFDCloseTraits::Free(int fd) {
23  // It's important to crash here.
24  // There are security implications to not closing a file descriptor
25  // properly. As file descriptors are "capabilities", keeping them open
26  // would make the current process keep access to a resource. Much of
27  // Chrome relies on being able to "drop" such access.
28  // It's especially problematic on Linux with the setuid sandbox, where
29  // a single open directory would bypass the entire security model.
30  PCHECK(0 == IGNORE_EINTR(close(fd)));
31}
32
33#endif  // OS_POSIX
34
35}  // namespace internal
36}  // namespace base
37