External Contributions to sfcc
******************************

Below are listed code contributions from the open source community.  
The format is:

Author, Organization
--------------------
MM/DD/YYYY [ bugnum ] description


where "bugnum" is the bug number on SourceForge where a summary of the fix can 
be found, along with a patch file containing the contributed code.

The SourceForge bugtracker can be found here:

https://sourceforge.net/tracker/?atid=712784&group_id=128809

********************************************************************************

Shashi Uli, Citrix
------------------
04/23/2008 [ 1940546 ] Memory corruption in AsciiToXmlStr()

Pavol Rusnak, Novell
--------------------
09/06/2009 [ 2102339 ] Missing ret values in sblim-sfcc
09/08/2008 [ 2102345 ] missing configuration of CIM-HOST-PORT in sblim-sfcc
11/12/2008 [ 2270179 ] Missing includes and values in return statements

Rajib Saha, AMI
---------------
08/19/2009 [ 2691478 ] sfcc 2.1.0 cannot handle OutParams on Extrinsic Method Call

Klaus Kampf, Novell
-------------------
09/02/2009 [ 2847782 ] sfcc getClass crashes if cimom isn't running
09/22/2009 [ 2849853 ] getClass reports most property types as CMPI_Instance
03/23/2011 [ 2990315 ] cmciRelease not called in case of error
04/25/2011 [ 2967265 ] code cleanup in sfcclient
05/29/2012 [ 3528819 ] Crash in getInstance when instance has NULL properties
12/04/2012 [ 3586680 ] improve error reporting in cmciConnect2

Suresh Sundriyal, VMWare
------------------------
04/05/2010 [ 2982349 ] Memory leak in backend/cimxml/client.c
04/05/2010 [ 2982352 ] Double free in backend/cimxml/property.c

Josef Moellers, Fujitsu
-----------------------
03/29/2011 [ 3196128 ] enumInstances does not set NameSpace in ObjectPath in XML mode
05/27/2011 [ 3286489 ] getInstance does not return key/value through XML

J. Bart Whiteley, Novell
------------------------
03/29/2011 [ 1956407 ] CIM-XML/HTTP connection to unix socket

Michal Minar
------------
07/31/2012 [ 3547832 ] memory leak in backend/cimxml/grammer.c
09/10/2012 [ 3555103 ] wrong declaration of release attribute in _CIMCArgsFT

James Kyle
----------
07/02/2013 [bugs:#2646] sblim-sfcc does not compile on apple systems 
