diff --git a/ChangeLog b/ChangeLog
index 49f2981..3d55979 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,12 @@
 	[ 3286489 ] getInstance does not return key/value through XML
 	(patch originated by Josef Moellers)
 
+2011-04-25  Narasimha Sharoff  <nsharoff@us.ibm.com>
+
+	* frontend/sfcc/sfcclient.c:
+	[ 2967265 ] code cleanup in sfcclient
+	(patch by Klaus Kaempf)
+
 2011-04-07  Chris Buccella  <buccella@linux.vnet.ibm.com>
 
 	* backend/cimxml/grammar.c:
@@ -55,6 +61,7 @@
 
 	* cimc/cimcclient.c
 	[ 3101151 ] SfcbLocal failed to connect due to hardcoded library path
+	(based on the patch by: Chris Poblete <Chris_Poblete@Dell.com>)
 
 2011-02-22  Narasimha Sharoff  <nsharoff@us.ibm.com>
 
diff --git a/NEWS b/NEWS
index 7b4d810..f2be3ed 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@
 ================
 
 Bugs:
+- 2967265: Code cleanup in frontend/sfcc/sfcclient.c
 - 3286489: getInstance does not return key/value through XML
 
 Changes in 2.2.2
diff --git a/cimc/cimcclient.c b/cimc/cimcclient.c
index d520fc4..7ed10a3 100644
--- a/cimc/cimcclient.c
+++ b/cimc/cimcclient.c
@@ -25,6 +25,8 @@
 #include <stdlib.h>
 #include <dlfcn.h>
 #include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 
 /*
  * Canonical CIM C API entry points
@@ -42,6 +44,7 @@
    void        *library; 
    InitCimcEnv  init=NULL;
    CIMCEnv     *rv=NULL;
+   struct      stat sbuf;
    
     libName[LIBLEN]=0;
     entry[ENTLEN]=0;
@@ -52,7 +55,7 @@
         snprintf(*msg,ERRLEN,"Invalid connection type '%s'. Must be 'XML' or 'SfcbLocal'.",id);
     } else {
         if ((strcmp(id, "SfcbLocal") == 0) && 
-	    ((SFCB_LIBDIR != NULL) && (strlen(SFCB_LIBDIR) > 0))) {
+	    (stat(SFCB_LIBDIR, &sbuf) == 0)) {
             snprintf(libName, LIBLEN, "%s/libcimcClient%s.so",SFCB_LIBDIR,id);
         } else {
             snprintf(libName, LIBLEN, "libcimcClient%s.so",id);
diff --git a/frontend/sfcc/sfcclient.c b/frontend/sfcc/sfcclient.c
index 89736ad..2eed047 100644
--- a/frontend/sfcc/sfcclient.c
+++ b/frontend/sfcc/sfcclient.c
@@ -215,12 +215,14 @@
 
 char * value2Chars (CMPIType type, CMPIValue *value)
 {
-   char str[2048], *p;
+#define SBUFLEN 32
+   char str[SBUFLEN], *p;
    unsigned int size;
    CMPIString *cStr;
 
    str[0]=0;
    if (type & CMPI_ARRAY) {
+	fprintf(stderr, "*** value2Chars not implemented for Array *** ");
    }
    else if (type & CMPI_ENC) {
 
@@ -283,29 +285,29 @@
 
       switch (type) {
       case CMPI_uint8:
-         sprintf(str, "%u", value->uint8);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%u", value->uint8);
+         break;
       case CMPI_sint8:
-         sprintf(str, "%d", value->sint8);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%d", value->sint8);
+         break;
       case CMPI_uint16:
-         sprintf(str, "%u", value->uint16);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%u", value->uint16);
+         break;
       case CMPI_sint16:
-         sprintf(str, "%d", value->sint16);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%d", value->sint16);
+         break;
       case CMPI_uint32:
-         sprintf(str, "%lu", value->uint32);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%lu", value->uint32);
+         break;
       case CMPI_sint32:
-         sprintf(str, "%ld", value->sint32);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%ld", value->sint32);
+         break;
       case CMPI_uint64:
-         sprintf(str, "%llu", value->uint64);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%llu", value->uint64);
+         break;
       case CMPI_sint64:
-         sprintf(str, "%lld", value->sint64);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%lld", value->sint64);
+         break;
       }
 
    }
@@ -313,13 +315,14 @@
 
       switch (type) {
       case CMPI_real32:
-         sprintf(str, "%g", value->real32);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%g", value->real32);
+         break;
       case CMPI_real64:
-         sprintf(str, "%g", value->real64);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%g", value->real64);
+         break;
       }
 
    }
+#undef SBUFLEN
    return strdup(str);
 }
