# HG changeset patch
# User Heidi Eckhart <heidieck(a)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(a)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();