From: Sangwan Kwon Date: Fri, 14 Aug 2020 09:13:28 +0000 (+0900) Subject: Resolve TOCTOU X-Git-Tag: submit/tizen/20200819.001851~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b9a932b77ed088b292363938cb2ccaf768ee8f0e;p=platform%2Fcore%2Fsecurity%2Fvist.git Resolve TOCTOU Change-Id: Id79686d19ed33cafec5915a5f828ccf4613db79a Signed-off-by: Sangwan Kwon --- 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);