diff mbox series

[BlueZ] input: Fix smatch warning

Message ID 20231010215853.629963-1-luiz.dentz@gmail.com
State New
Headers show
Series [BlueZ] input: Fix smatch warning | expand

Commit Message

Luiz Augusto von Dentz Oct. 10, 2023, 9:58 p.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

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(-)

Comments

patchwork-bot+bluetooth@kernel.org Oct. 11, 2023, 9:20 p.m. UTC | #1
Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Tue, 10 Oct 2023 14:58:52 -0700 you wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> 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(-)

Here is the summary with links:
  - [BlueZ] input: Fix smatch warning
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=afb47b13c600

You are awesome, thank you!
diff mbox series

Patch

diff --git a/profiles/input/device.c b/profiles/input/device.c
index 4310dd192e11..6c64ff1c1c52 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
@@ -20,6 +20,7 @@ 
 #include <fcntl.h>
 #include <unistd.h>
 #include <sys/ioctl.h>
+#include <sys/uio.h>
 
 #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;
 	}