[Libosinfo] [PATCH] loader: Negative loop bound

Fabiano Fidêncio fidencio at redhat.com
Sat May 24 00:49:39 UTC 2014


osinfo_loader_nodeset() can return -1 without set an error

Caught by: https://scan.coverity.com
---
 osinfo/osinfo_loader.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
index aa5e48f..859328b 100644
--- a/osinfo/osinfo_loader.c
+++ b/osinfo/osinfo_loader.c
@@ -673,7 +673,7 @@ static void osinfo_loader_datamap(OsinfoLoader *loader,
     OsinfoDatamap *map = osinfo_loader_get_datamap(loader, id);
 
     nnodes = osinfo_loader_nodeset("./entry", ctxt, &nodes, err);
-    if (error_is_set(err))
+    if (nnodes < 0 || error_is_set(err))
         goto cleanup;
 
     for (i = 0 ; i < nnodes ; i++) {
@@ -911,7 +911,7 @@ static OsinfoMedia *osinfo_loader_media (OsinfoLoader *loader,
     }
 
     gint nnodes = osinfo_loader_nodeset("./variant", ctxt, &nodes, err);
-    if (error_is_set(err)) {
+    if (nnodes < 0 || error_is_set(err)) {
         g_object_unref(media);
         return NULL;
     }
@@ -1002,7 +1002,7 @@ static OsinfoTree *osinfo_loader_tree (OsinfoLoader *loader,
     osinfo_loader_entity(loader, OSINFO_ENTITY(tree), keys, ctxt, root, err);
 
     gint nnodes = osinfo_loader_nodeset("./treeinfo/*", ctxt, &nodes, err);
-    if (error_is_set(err)) {
+    if (nnodes < 0 || error_is_set(err)) {
         g_object_unref(G_OBJECT(tree));
         return NULL;
     }
@@ -1176,7 +1176,7 @@ static OsinfoDeviceDriver *osinfo_loader_driver(OsinfoLoader *loader,
     }
 
     gint nnodes = osinfo_loader_nodeset("./*", ctxt, &nodes, err);
-    if (error_is_set(err)) {
+    if (nnodes < 0 || error_is_set(err)) {
         g_object_unref(G_OBJECT(driver));
         return NULL;
     }
@@ -1284,7 +1284,7 @@ static void osinfo_loader_os(OsinfoLoader *loader,
     g_free(nodes);
 
     nnodes = osinfo_loader_nodeset("./variant", ctxt, &nodes, err);
-    if (error_is_set(err))
+    if (nnodes < 0 || error_is_set(err))
         goto cleanup;
 
     for (i = 0 ; i < nnodes ; i++) {
-- 
1.9.0




More information about the Libosinfo mailing list