From b9a932b77ed088b292363938cb2ccaf768ee8f0e Mon Sep 17 00:00:00 2001 From: Sangwan Kwon Date: Fri, 14 Aug 2020 18:13:28 +0900 Subject: [PATCH] Resolve TOCTOU Change-Id: Id79686d19ed33cafec5915a5f828ccf4613db79a Signed-off-by: Sangwan Kwon --- src/vist/rmi/impl/socket.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/vist/rmi/impl/socket.cpp b/src/vist/rmi/impl/socket.cpp index c9a1638..b299520 100644 --- a/src/vist/rmi/impl/socket.cpp +++ b/src/vist/rmi/impl/socket.cpp @@ -60,13 +60,13 @@ Socket::Socket(const std::string& path) ::strncpy(addr.sun_path, path.c_str(), sizeof(sockaddr_un::sun_path) - 1); addr.sun_path[sizeof(sockaddr_un::sun_path) - 1] = '\0'; - if (addr.sun_path[0] == '@') + if (addr.sun_path[0] == '@') { addr.sun_path[0] = '\0'; - - struct stat buf; - if (::stat(path.c_str(), &buf) == 0) + } else { + errno = 0; if (::unlink(path.c_str()) == -1) - THROW(ErrCode::RuntimeError) << "Failed to remove exist socket."; + WARN(VIST) << "Failed to remove exist socket: " << errno; + } if (::bind(fd, reinterpret_cast<::sockaddr*>(&addr), sizeof(::sockaddr_un)) == -1) { ::close(fd); -- 2.34.1