提交 00e00510 编写于 作者: M Matthias Bolte

xen: Use virParseMacAddr instead of sscanf

This also fixes a bug in xenXMDomainConfigParse where uninitialized
memory would be used as MAC address if sscanf fails.
上级 2f047d48
...@@ -1819,25 +1819,11 @@ xenDaemonParseSxprNets(virConnectPtr conn, ...@@ -1819,25 +1819,11 @@ xenDaemonParseSxprNets(virConnectPtr conn,
tmp = sexpr_node(node, "device/vif/mac"); tmp = sexpr_node(node, "device/vif/mac");
if (tmp) { if (tmp) {
unsigned int mac[6]; if (virParseMacAddr(tmp, net->mac) < 0) {
if (sscanf(tmp, "%02x:%02x:%02x:%02x:%02x:%02x",
(unsigned int*)&mac[0],
(unsigned int*)&mac[1],
(unsigned int*)&mac[2],
(unsigned int*)&mac[3],
(unsigned int*)&mac[4],
(unsigned int*)&mac[5]) != 6) {
virXendError(conn, VIR_ERR_INTERNAL_ERROR, virXendError(conn, VIR_ERR_INTERNAL_ERROR,
_("malformed mac address '%s'"), _("malformed mac address '%s'"), tmp);
tmp);
goto cleanup; goto cleanup;
} }
net->mac[0] = mac[0];
net->mac[1] = mac[1];
net->mac[2] = mac[2];
net->mac[3] = mac[3];
net->mac[4] = mac[4];
net->mac[5] = mac[5];
} }
if (model && if (model &&
......
...@@ -1115,20 +1115,11 @@ xenXMDomainConfigParse(virConnectPtr conn, virConfPtr conf) { ...@@ -1115,20 +1115,11 @@ xenXMDomainConfigParse(virConnectPtr conn, virConfPtr conf) {
goto no_memory; goto no_memory;
if (mac[0]) { if (mac[0]) {
unsigned int rawmac[6]; if (virParseMacAddr(mac, net->mac) < 0) {
sscanf(mac, "%02x:%02x:%02x:%02x:%02x:%02x", xenXMError(conn, VIR_ERR_INTERNAL_ERROR,
(unsigned int*)&rawmac[0], _("malformed mac address '%s'"), mac);
(unsigned int*)&rawmac[1], goto cleanup;
(unsigned int*)&rawmac[2], }
(unsigned int*)&rawmac[3],
(unsigned int*)&rawmac[4],
(unsigned int*)&rawmac[5]);
net->mac[0] = rawmac[0];
net->mac[1] = rawmac[1];
net->mac[2] = rawmac[2];
net->mac[3] = rawmac[3];
net->mac[4] = rawmac[4];
net->mac[5] = rawmac[5];
} }
if (bridge[0] || STREQ(script, "vif-bridge") || if (bridge[0] || STREQ(script, "vif-bridge") ||
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册