Support use of CMPI_chars

- in sfccclient.c
- in the cimxml backend
- in testing

When tracking down a crash in sfcc-interface of Openwsman, I found a
conflicting definition of CMPI_chars vs. CMPI_classNameString.

- CMPI_chars is defined as ((16+7)<<8) (equals 0x1700)
- CMPI_classNameString is defined as (CMPI_string | CMPI_class)
  with CMPI_string = 0x1600 and CMPI_class = 0x1300
- Arithmetic 'OR' of 0x1600 and 0x1300 equals 0x1700. -> Bummer !

The real problem is that CMPI_chars is handled as a 'char*' in CMPIValue
whereas CMPI_classNameString is handled as CMPIString.

The bug is triggered in value2Chars() of frontend/sfcc/sfcclient.c
trying to access a CMPI_chars value as a CMPIString.

The use of CMPI_chars is introduced in sfccs frontend/cpp/CimData.cpp
when encapsulating a CimString or char* as CimData.

Upstream: http://sourceforge.net/p/sblim/bugs/1873/
3 files changed