diff -up cmpi-bindings-0.5.2/swig/cmpi.i.orig cmpi-bindings-0.5.2/swig/cmpi.i --- cmpi-bindings-0.5.2/swig/cmpi.i.orig 2013-01-10 08:45:50.640372951 +0100 +++ cmpi-bindings-0.5.2/swig/cmpi.i 2013-01-10 08:54:10.930703349 +0100 @@ -258,11 +258,10 @@ data_value(const CMPIData *dp) else if (dp->state & (unsigned short)CMPI_badValue) { SWIG_exception(SWIG_ValueError, "bad value"); } - else if (dp->state & CMPI_nullValue) { - result = Target_Null; - Target_INCREF(result); + else if (dp->state & CMPI_null) { + result = value_value(&(dp->value), CMPI_null); } - else if ((dp->type) & CMPI_ARRAY) { + else if (!(dp->state & CMPI_nullValue) && (dp->type & CMPI_ARRAY)) { int size = CMGetArrayCount(dp->value.array, NULL); int i; result = Target_SizedArray(size); diff -up cmpi-bindings-0.5.2/swig/python/cmpi_pywbem_bindings.py.orig cmpi-bindings-0.5.2/swig/python/cmpi_pywbem_bindings.py --- cmpi-bindings-0.5.2/swig/python/cmpi_pywbem_bindings.py.orig 2013-01-10 08:50:28.072663502 +0100 +++ cmpi-bindings-0.5.2/swig/python/cmpi_pywbem_bindings.py 2013-01-10 08:52:04.124110228 +0100 @@ -872,6 +872,8 @@ class CMPIProxyProvider(object): def cmpi2pywbem_data(self, cdata, _type=None, is_array=None): #TODO check for valid cdata.state #TODO error handling + if (cdata.state & cmpi.CMPI_nullValue) > 0: + return None if _type is None: _type, is_array = _cmpi_type2string(cdata.type) attr = _type