From 18fdffdf1778d4e8346894af84efa0a0a27baf2d Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sun, 26 Mar 2023 00:14:54 -0700 Subject: [PATCH] fix some none portable code that was using GCC impl details --- src/InternalDHKeyExchange.cc | 10 +++++++++- src/SocketRecvBuffer.cc | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/InternalDHKeyExchange.cc b/src/InternalDHKeyExchange.cc index 83058f5e..b915a853 100644 --- a/src/InternalDHKeyExchange.cc +++ b/src/InternalDHKeyExchange.cc @@ -68,10 +68,18 @@ void DHKeyExchange::init(const unsigned char* prime, size_t primeBits, generator_ = n(gen.c_str(), gen.length()); size_t pbytes = (privateKeyBits + 7) / 8; +#if defined(_MSC_VER) + // MSVC will not compile dynamic arrays + unsigned char* buf = new unsigned char[pbytes]; +#else unsigned char buf[pbytes]; +#endif util::generateRandomData(buf, pbytes); privateKey_ = n(reinterpret_cast(buf), pbytes); - +#if defined(_MSC_VER) + // clean up memory + delete[] buf; +#endif keyLength_ = (primeBits + 7) / 8; } diff --git a/src/SocketRecvBuffer.cc b/src/SocketRecvBuffer.cc index 8b2352a6..e07f1c24 100644 --- a/src/SocketRecvBuffer.cc +++ b/src/SocketRecvBuffer.cc @@ -51,7 +51,7 @@ SocketRecvBuffer::~SocketRecvBuffer() = default; ssize_t SocketRecvBuffer::recv() { - size_t n = std::end(buf_) - last_; + size_t n = (buf_.data() + 16_k) - last_; if (n == 0) { A2_LOG_DEBUG("Buffer full"); return 0;