================ @@ -1154,17 +1156,25 @@ Status GDBRemoteCommunication::StartDebugserverProcess( if (socket_pipe.CanWrite()) socket_pipe.CloseWriteFileDescriptor(); if (socket_pipe.CanRead()) { - // The port number may be up to "65535\0". - char port_cstr[6] = {0}; - size_t num_bytes = sizeof(port_cstr); // Read port from pipe with 10 second timeout. - error = socket_pipe.ReadWithTimeout( - port_cstr, num_bytes, std::chrono::seconds{10}, num_bytes); + std::string port_str; + while (error.Success()) { + char buf[10]; + if (llvm::Expected<size_t> num_bytes = socket_pipe.Read( + buf, std::size(buf), std::chrono::seconds(10))) { + port_str.append(buf, *num_bytes); + if (*num_bytes == 0) ---------------- DavidSpickett wrote:
Also shouldn't there be something here that stops us reading more than the buf size? If I read 9 bytes in one call, then 10 in the next, it'll overflow. Should there be some tracking of how much we have already read? https://github.com/llvm/llvm-project/pull/128719 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits