alfred: Ensure processed change_iface packet is 0-terminated

Message ID 20220219075424.802930-1-sven@narfation.org (mailing list archive)
State Accepted, archived
Delegated to: Simon Wunderlich
Headers
Series alfred: Ensure processed change_iface packet is 0-terminated |

Commit Message

Sven Eckelmann Feb. 19, 2022, 7:54 a.m. UTC
  A client sending a alfred_change_interface_v0 packet to the alfred server
might have forgotten to 0-terminate the string. In this case, strstr in
unix_sock_change_iface might read outside of the available buffer.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
 unix_sock.c | 2 ++
 1 file changed, 2 insertions(+)
  

Patch

diff --git a/unix_sock.c b/unix_sock.c
index bc39199..8c2b762 100644
--- a/unix_sock.c
+++ b/unix_sock.c
@@ -329,6 +329,8 @@  unix_sock_change_iface(struct globals *globals,
 	if (len < (int)(sizeof(*change_iface) - sizeof(change_iface->header)))
 		goto err;
 
+	change_iface->ifaces[sizeof(change_iface->ifaces) - 1] = '\0';
+
 	if (globals->opmode == OPMODE_SECONDARY) {
 		if (strstr(change_iface->ifaces, ",") != NULL) {
 			ret = -EINVAL;