LocalSocketImpl.cpp: Set O_CLOEXEC on received FDs

Set O_CLOEXEC on received file descriptors. This prevents FD leakage
across an exec boundary. Please see the description of O_CLOEXEC in "man
2 open" for the reasons why this is useful.

Test: Device boots and no observed errors.
Change-Id: Id0d9c9d71efb25dacb26d5d98d93fc3b72c1b6ae
This commit is contained in:
Nick Kralevich
2016-12-20 07:13:25 -08:00
parent 1e814b3928
commit b0e5079b5d

View File

@@ -202,9 +202,7 @@ static ssize_t socket_read_all(JNIEnv *env, jobject thisJ, int fd,
msg.msg_control = cmsgbuf;
msg.msg_controllen = sizeof(cmsgbuf);
do {
ret = recvmsg(fd, &msg, MSG_NOSIGNAL);
} while (ret < 0 && errno == EINTR);
ret = TEMP_FAILURE_RETRY(recvmsg(fd, &msg, MSG_NOSIGNAL | MSG_CMSG_CLOEXEC));
if (ret < 0 && errno == EPIPE) {
// Treat this as an end of stream