]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
xenstore: Use virMacAddrCompare() for case-insensitive comparison
authorJohn Levon <john.levon@sun.com>
Thu, 5 Feb 2009 18:14:00 +0000 (18:14 +0000)
committerJohn Levon <john.levon@sun.com>
Thu, 5 Feb 2009 18:14:00 +0000 (18:14 +0000)
ChangeLog
src/xs_internal.c

index 7c22b5ccbd796ef01a7645a72d0b8a0482f76639..d08fb22a5d5b9ba00cfe39c361854537a7fd6f0c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Feb  5 18:08:39 GMT 2009 John Levon <john.levon@sun.com>
+
+       * src/xs_internal.c: Use virMacAddrCompare() for
+       case-insensitive comparison
+
 Thu Feb  5 17:19:24 GMT 2009 John Levon <john.levon@sun.com>
 
        * src/xend_internal.c: report error for some xend operations on
index 9e6b80f08abb0f1fc9bfc097e1d2de1dae815a3e..298bee802bccdfa2dcf77c8bc2b43b3380d2b6dd 100644 (file)
@@ -915,7 +915,7 @@ xenStoreDomainGetOSTypeID(virConnectPtr conn, int id) {
 char *
 xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) {
     char dir[80], path[128], **list = NULL, *val = NULL;
-    unsigned int maclen, len, i, num;
+    unsigned int len, i, num;
     char *ret = NULL;
     xenUnifiedPrivatePtr priv;
 
@@ -927,9 +927,6 @@ xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) {
         return (NULL);
     if (mac == NULL)
         return (NULL);
-    maclen = strlen(mac);
-    if (maclen <= 0)
-        return (NULL);
 
     snprintf(dir, sizeof(dir), "/local/domain/0/backend/vif/%d", id);
     list = xs_directory(priv->xshandle, 0, dir, &num);
@@ -937,18 +934,20 @@ xenStoreDomainGetNetworkID(virConnectPtr conn, int id, const char *mac) {
         return(NULL);
     for (i = 0; i < num; i++) {
         snprintf(path, sizeof(path), "%s/%s/%s", dir, list[i], "mac");
-        val = xs_read(priv->xshandle, 0, path, &len);
-        if (val == NULL)
+        if ((val = xs_read(priv->xshandle, 0, path, &len)) == NULL)
             break;
-        if ((maclen != len) || memcmp(val, mac, len)) {
-            free(val);
-        } else {
+
+        bool match = (virMacAddrCompare(val, mac) == 0);
+
+        VIR_FREE(val);
+
+        if (match) {
             ret = strdup(list[i]);
-            free(val);
             break;
         }
     }
-    free(list);
+
+    VIR_FREE(list);
     return(ret);
 }