summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Grin <k2k@narod.ru>2021-11-26 13:50:52 +0300
committerEvgeny Grin <k2k@narod.ru>2021-11-26 19:00:31 +0300
commitb25f28d0d77a63e1757a2afb02ccbddb4d21f44d (patch)
tree36938481a8c47346ba3a3c27e53568b4102cae44
parent8f17428b84f877bd04e03b6cccd0f4f23101ef3a (diff)
downloadgnutls-b25f28d0d77a63e1757a2afb02ccbddb4d21f44d.tar.gz
sockets: fixed building for Windows with compilers without VLA support
Signed-off-by: Evgeny Grin <k2k@narod.ru>
-rw-r--r--lib/system/sockets.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/system/sockets.c b/lib/system/sockets.c
index 5990d2dfa6..57c14f63b8 100644
--- a/lib/system/sockets.c
+++ b/lib/system/sockets.c
@@ -84,12 +84,15 @@ ssize_t
system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec,
int iovec_cnt)
{
- WSABUF bufs[iovec_cnt];
+ WSABUF bufs[32];
DWORD bytes_sent;
- int to_send_cnt = 0;
+ DWORD to_send_cnt = 0;
size_t to_send_bytes = 0;
- while (to_send_cnt < iovec_cnt && to_send_bytes < SSIZE_MAX) {
+ if ((size_t)iovec_cnt > sizeof(bufs) / sizeof(bufs[0]))
+ iovec_cnt = sizeof(bufs) / sizeof(bufs[0]);
+
+ while (to_send_cnt < (DWORD)iovec_cnt && to_send_bytes < SSIZE_MAX) {
bufs[to_send_cnt].buf = iovec[to_send_cnt].iov_base;
if (to_send_bytes + iovec[to_send_cnt].iov_len > SSIZE_MAX) {