[libvirt] [PATCH 3/9] phyp: Break potential infinite loops

Matthias Bolte matthias.bolte at googlemail.com
Fri Nov 6 03:28:01 UTC 2009


---
 src/phyp/phyp_driver.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index 5379cd3..b94d0fa 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -1040,9 +1040,13 @@ phypListDomainsGeneric(virConnectPtr conn, int *ids, int nids,
         goto err;
     else {
         while (got < nids) {
-            if (ret[i] == '\n') {
-                if (virStrToLong_i(id_c, &char_ptr, 10, &ids[got]) == -1)
-                    return 0;
+            if (ret[i] == '\0')
+                break;
+            else if (ret[i] == '\n') {
+                if (virStrToLong_i(id_c, &char_ptr, 10, &ids[got]) == -1) {
+                    VIR_ERROR("Cannot parse number from '%s'", id_c);
+                    goto err;
+                }
                 memset(id_c, 0, 10);
                 j = 0;
                 got++;
@@ -1112,7 +1116,8 @@ phypListDefinedDomains(virConnectPtr conn, char **const names, int nnames)
                 }
                 char_ptr2++;
                 domains = char_ptr2;
-            }
+            } else
+                break;
         }
     }
 
-- 
1.6.0.4




More information about the libvir-list mailing list