summaryrefslogtreecommitdiffstats
path: root/dt_fd_forward
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2018-10-16 20:22:37 -0700
committerAndreas Gampe <agampe@google.com>2018-10-19 13:06:33 -0700
commitdfcd82c09e8ce4562ed39e006d4b1c8163b4e25e (patch)
treed9bfd3e043a95b3c8e302769cef23c13a89df3c5 /dt_fd_forward
parent4f570a43146c1456071f2ffe6590ab96e723051a (diff)
downloadart-dfcd82c09e8ce4562ed39e006d4b1c8163b4e25e.tar.gz
art-dfcd82c09e8ce4562ed39e006d4b1c8163b4e25e.tar.bz2
art-dfcd82c09e8ce4562ed39e006d4b1c8163b4e25e.zip
ART: Fix android-cloexec warnings
Use the DupCloexec helper wherever possible. Add O_CLOEXEC to open and fopen calls. Bug: 32619234 Test: WITH_TIDY=1 mmma art Change-Id: I0afb1beea53ab8f68ab85d1762aff999903060fe
Diffstat (limited to 'dt_fd_forward')
-rw-r--r--dt_fd_forward/dt_fd_forward.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/dt_fd_forward/dt_fd_forward.cc b/dt_fd_forward/dt_fd_forward.cc
index 116cdf84ed..a99f7850c0 100644
--- a/dt_fd_forward/dt_fd_forward.cc
+++ b/dt_fd_forward/dt_fd_forward.cc
@@ -105,12 +105,21 @@ static void SendListenMessage(const android::base::unique_fd& fd) {
TEMP_FAILURE_RETRY(send(fd, kListenStartMessage, sizeof(kListenStartMessage), MSG_EOR));
}
+// Copy from file_utils, so we do not need to depend on libartbase.
+static int DupCloexec(int fd) {
+#if defined(__linux__)
+ return fcntl(fd, F_DUPFD_CLOEXEC, 0);
+#else
+ return dup(fd);
+#endif
+}
+
jdwpTransportError FdForwardTransport::SetupListen(int listen_fd) {
std::lock_guard<std::mutex> lk(state_mutex_);
if (!ChangeState(TransportState::kClosed, TransportState::kListenSetup)) {
return ERR(ILLEGAL_STATE);
} else {
- listen_fd_.reset(dup(listen_fd));
+ listen_fd_.reset(DupCloexec(listen_fd));
SendListenMessage(listen_fd_);
CHECK(ChangeState(TransportState::kListenSetup, TransportState::kListening));
return OK;
@@ -339,7 +348,7 @@ IOResult FdForwardTransport::ReceiveFdsFromSocket(bool* do_handshake) {
write_lock_fd_.reset(out_fds.write_lock_fd_);
// We got the fds. Send ack.
- close_notify_fd_.reset(dup(listen_fd_));
+ close_notify_fd_.reset(DupCloexec(listen_fd_));
SendAcceptMessage(close_notify_fd_);
return IOResult::kOk;