[Libvirt-cim] [PATCH 1 of 2] HostSystem: check if input ref is valid

Heidi Eckhart heidieck at linux.vnet.ibm.com
Thu Jan 24 11:44:12 UTC 2008


# HG changeset patch
# User Heidi Eckhart <heidieck at linux.vnet.ibm.com>
# Date 1201177348 -3600
# Node ID 4cbd5d50bee23b8cf6d08f5724aef04b011d2030
# Parent  70dedb925282ed3ceccf95872537204a1531c777
HostSystem: check if input ref is valid
Signed-off-by: Heidi Eckhart <heidieck at linux.vnet.ibm.com>

diff -r 70dedb925282 -r 4cbd5d50bee2 src/Virt_HostSystem.c
--- a/src/Virt_HostSystem.c	Thu Jan 24 12:56:45 2008 +0100
+++ b/src/Virt_HostSystem.c	Thu Jan 24 13:22:28 2008 +0100
@@ -112,19 +112,35 @@ CMPIStatus get_host_cs(const CMPIBroker 
 
 static CMPIStatus return_host_cs(const CMPIObjectPath *reference,
                                  const CMPIResult *results,
-                                 int name_only)
+                                 int name_only,
+                                 bool getInstance)
 {
         CMPIStatus s = {CMPI_RC_OK, NULL};
         CMPIInstance *instance;
 
         s = get_host_cs(_BROKER, reference, &instance);
-        if (s.rc != CMPI_RC_OK || instance == NULL)
-                goto out;
+        if (s.rc != CMPI_RC_OK)
+                goto out;
+
+        if (instance == NULL) {
+                if (getInstance)
+                        cu_statusf(_BROKER, &s,
+                                   CMPI_RC_ERR_NOT_FOUND,
+                                   "No such instance");
+                goto out;
+        }
+
+        if (getInstance) {
+                s = cu_validate_ref(_BROKER, reference, instance);
+                if (s.rc != CMPI_RC_OK)
+                        goto out;
+        }
 
         if (name_only)
                 cu_return_instance_name(results, instance);
         else
                 CMReturnInstance(results, instance);
+
  out:
         return s;
 }
@@ -164,7 +180,7 @@ static CMPIStatus EnumInstanceNames(CMPI
                                     const CMPIResult *results,
                                     const CMPIObjectPath *reference)
 {
-        return return_host_cs(reference, results, 1);
+        return return_host_cs(reference, results, 1, false);
 }
 
 static CMPIStatus EnumInstances(CMPIInstanceMI *self,
@@ -174,7 +190,7 @@ static CMPIStatus EnumInstances(CMPIInst
                                 const char **properties)
 {
 
-        return return_host_cs(reference, results, 0);
+        return return_host_cs(reference, results, 0, false);
 }
 
 static CMPIStatus GetInstance(CMPIInstanceMI *self,
@@ -183,7 +199,7 @@ static CMPIStatus GetInstance(CMPIInstan
                               const CMPIObjectPath *reference,
                               const char **properties)
 {
-        return return_host_cs(reference, results, 0);
+        return return_host_cs(reference, results, 0, true);
 }
 
 DEFAULT_CI();




More information about the Libvirt-cim mailing list