From afb47b13c600b0c5e01b4fe3f2e670e89faa6ec2 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Tue, 10 Oct 2023 14:57:56 -0700 Subject: [PATCH] input: Fix smatch warning This fixes the following warning: profiles/input/device.c:165:26: warning: Variable length array is used. --- profiles/input/device.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/profiles/input/device.c b/profiles/input/device.c index 4310dd192..6c64ff1c1 100644 --- a/profiles/input/device.c +++ b/profiles/input/device.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "lib/bluetooth.h" #include "lib/hidp.h" @@ -162,32 +163,33 @@ static bool hidp_send_message(GIOChannel *chan, uint8_t hdr, { int fd; ssize_t len; - uint8_t msg[size + 1]; + struct iovec iov[2]; if (!chan) { error("BT socket not connected"); return false; } + iov[0].iov_base = &hdr; + iov[0].iov_len = sizeof(hdr); + if (data == NULL) size = 0; - msg[0] = hdr; - if (size > 0) - memcpy(&msg[1], data, size); - ++size; + iov[1].iov_base = (void *)data; + iov[1].iov_len = size; fd = g_io_channel_unix_get_fd(chan); - len = write(fd, msg, size); + len = writev(fd, iov, 2); if (len < 0) { error("BT socket write error: %s (%d)", strerror(errno), errno); return false; } - if ((size_t) len < size) { + if ((size_t) len < size + 1) { error("BT socket write error: partial write (%zd of %zu bytes)", - len, size); + len, size + 1); return false; } -- 2.47.3