From ef22e53c9360ddb4bdff61a12013a2812fb7346a Mon Sep 17 00:00:00 2001
From: longtao <longtao.wu(a)zstack.io>
Date: Thu, 16 Jun 2022 14:08:14 +0800
Subject: [PATCH] virMacAddrParse: Fix wrong termination character
The judgment of the termination character should be the '\0' character, not
a space.
Using spaces to judge, content can be injected into mac. such as:
"70:af:e7:1f:3f:89\32injected".
Before this patch, the terminating character was a space ('\32'),not
'\0'.
So I can set the DHCP host mac like this "<host mac='c0:3b:04:21:15:35
injected' name='name129' ip='192.168.100.129'/>".
When running the network, no error is reported.
But, when using this mac to create a virtual machine, Will get
"virNetSocketReadWire:1805 : End of file while reading data: Input/output
error" in the libvirtd log.
---
src/util/virmacaddr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/util/virmacaddr.c b/src/util/virmacaddr.c
index 6b22384cee..ba7c7e7076 100644
--- a/src/util/virmacaddr.c
+++ b/src/util/virmacaddr.c
@@ -163,7 +163,7 @@ virMacAddrParse(const char* str, virMacAddr *addr)
addr->addr[i] = (unsigned char) result;
- if ((i == 5) && (*end_ptr <= ' '))
+ if ((i == 5) && (*end_ptr == 0))
return 0;
if (*end_ptr != ':')
break;
--
2.32.0