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

Heidi Eckhart heidieck at linux.vnet.ibm.com
Fri Jan 25 10:04:52 UTC 2008


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

diff -r adf18661f794 -r a6f0628644c1 src/Virt_HostSystem.c
--- a/src/Virt_HostSystem.c	Thu Jan 24 12:56:45 2008 +0100
+++ b/src/Virt_HostSystem.c	Fri Jan 25 11:53:35 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)
+                                 bool 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