diff --git a/actions.cpp b/actions.cpp
index dc97b09..80d4de6 100644
--- a/actions.cpp
+++ b/actions.cpp
@@ -891,7 +891,7 @@ void CRtdOpAction::showInfo()
 
 void CActions::afficheInfo()
 {
-  printf("Number of actions = [%d]\n", M_actionVect.size());
+  printf("Number of actions = [%zu]\n", M_actionVect.size());
   for(int i = 0; i<M_actionVect.size(); ++i) {
     printf("actionlist[%d] : \n", i);
     if (M_actionVect[i]) {
diff --git a/call.cpp b/call.cpp
index 0f72146..75229dd 100644
--- a/call.cpp
+++ b/call.cpp
@@ -1307,7 +1307,7 @@ const char * call::get_header_field_code(char *msg, const char * name)
 const char * call::get_last_header(const char * name)
 {
   static char last_header[MAX_HEADER_LEN * 10];
-  const char * src;
+  char * src;
   char * dest; char * ptr;
   /* Gcc will zero extend this using memset, if we do a default initializer.
      We don't need this behavior, because we can just use sprintf. */
@@ -1386,7 +1386,7 @@ char * call::get_header_content(char* message, const char * name)
 {
   /* non reentrant. consider accepting char buffer as param */
   static char last_header[MAX_HEADER_LEN * 10];
-  const char * src;
+  char * src;
   char * dest, * start, * ptr;
 
   /* returns empty string in case of error */
@@ -2282,9 +2282,9 @@ void call::getHexStringParam(char * dest, const char * src, int * len)
   }
 }
 
-char* call::getKeywordParam(const char * src, const char * param, char * output)
+const char* call::getKeywordParam(const char * src, const char * param, char * output)
 {
-  char *key, *tmp;
+  const char *key, *tmp;
   int len;
   int inParam = 1;
 
@@ -2619,10 +2619,10 @@ char* call::createSendingMessage(const char * src, int P_index)
   static char msg_buffer[SIPP_MAX_MSG_SIZE+2];
   if (src) {
     char*  dest = msg_buffer;
-    char*  key;
+    const char*  key;
     createMsgContext createCtx;
     char   current_line[MAX_HEADER_LEN];
-    char*  line_mark = NULL;
+    const char*  line_mark = NULL;
     Message* pMessage = m_pScenario->message[P_index];
 
     createCtx.len_marker = NULL;
diff --git a/call.hpp b/call.hpp
index 014e6cc..9909063 100644
--- a/call.hpp
+++ b/call.hpp
@@ -294,7 +294,7 @@ public:
 
   // Get parameters from a [keyword]
   void getHexStringParam(char * dest, const char * src, int * len);
-  char* getKeywordParam(const char * src, const char * param, char * output);
+  const char* getKeywordParam(const char * src, const char * param, char * output);
 
   typedef struct {
     char* len_marker;
diff --git a/except.cpp b/except.cpp
index 40ac56a..310d8c2 100644
--- a/except.cpp
+++ b/except.cpp
@@ -20,6 +20,7 @@
 
 #include "except.hpp"
 #include <stdarg.h>
+#include <stdio.h>
 
 
 SIPpException::Context::Context(const char *a_SrcFile,
diff --git a/manager.cpp b/manager.cpp
index c41309f..f698468 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -1117,7 +1117,7 @@ void CManager::RequestDate()
 
 void CManager::DumpDebug()
 {
-  printf("Running TID: %d\n", m_TransIdList.size());
+  printf("Running TID: %zu\n", m_TransIdList.size());
   for (transid_list::iterator it = m_TransIdList.begin(); it != m_TransIdList.end(); ++it) {
     printf(" 0x%x \n", *it);
   }
@@ -1527,7 +1527,7 @@ void CManager::WriteToReport(const char *a_Format, ... )
     va_list t_Args;
     va_start(t_Args, a_Format);
     vsprintf(t_Buffer, a_Format, t_Args);
-    fprintf(m_ReportFile, t_Buffer);
+    fprintf(m_ReportFile, "%s", t_Buffer);
     va_end(t_Args);
   }
 }
diff --git a/mgr_main.cpp b/mgr_main.cpp
index 973f2aa..93dc118 100644
--- a/mgr_main.cpp
+++ b/mgr_main.cpp
@@ -66,7 +66,7 @@ int sobuffersize = 65535;
 int currentmode = 0;
 
 // Global Variables
-char *g_Version = "v0.01";
+const char *g_Version = "v0.01";
 int g_ManagerPort = 5000;
 int g_ConnectedCpu = 0;
 CpuClient* g_CpuClient[MAX_CPU_CLIENTS];
diff --git a/scenario.cpp b/scenario.cpp
index 6069de1..c0e60e1 100644
--- a/scenario.cpp
+++ b/scenario.cpp
@@ -722,7 +722,7 @@ void Message::parseSend(ScenarioParseContext& a_ParseCtx)
       throw ScenarioParseException(SIPP_DBG_INFO,
             EXCSTR(("Invalid random distribution for 'clen_random': %s", ptr)));
     }
-    char* sep = strchr(ptr, ':');
+    const char* sep = strchr(ptr, ':');
     for (int p = 0; sep && p<MAX_CLEN_PARM; p++) {
       sep++;
       clen_random_parm[p] = atol(sep);
diff --git a/sipp.cpp b/sipp.cpp
index f18768d..21bb9dc 100644
--- a/sipp.cpp
+++ b/sipp.cpp
@@ -663,6 +663,10 @@ int send_nowait(int s, const void *msg, int len, int flags)
 #endif 
 }
 
+char * strcasestr2(char * s, const char * find) {
+    return (char*) strcasestr2((const char*)s, find);
+}
+
 const char * strcasestr2(const char * s, const char * find) {
   char c, sc;
   size_t len;
@@ -4224,7 +4228,7 @@ int open_connections()
 }
 
 
-void connect_to_peer(const char *peer_host, int *peer_port, SockAddrStorage *peer_sockaddr,
+void connect_to_peer(char *peer_host, int *peer_port, SockAddrStorage *peer_sockaddr,
                      char *peer_ip, int *peer_socket)
 {
   if(strstr(peer_host, ":")) {
@@ -4309,7 +4313,7 @@ bool is_a_peer_socket(int peer_socket)
   }
 }
     
-void connect_local_twin_socket(const char * twinSippHost)
+void connect_local_twin_socket(char * twinSippHost)
 {
   if(strstr(twinSippHost, ":")) {
     twinSippPort = atol(strstr(twinSippHost, ":")+1);
diff --git a/sipp.hpp b/sipp.hpp
index 64b4007..2eeb73e 100644
--- a/sipp.hpp
+++ b/sipp.hpp
@@ -494,6 +494,7 @@ int pollset_add(call * p_call, int socket);
 
 /********************* Utilities functions  *******************/
 
+char * strcasestr2 (char *__haystack, const char *__needle);
 const char * strcasestr2 (const char *__haystack, const char *__needle);
 const char * get_peer_addr(const char *);
 int get_decimal_from_hex(char hex);
@@ -508,9 +509,9 @@ void timeout_alarm(int);
 int * get_peer_socket(char *);
 bool is_a_peer_socket(int);
 bool is_a_local_socket(int);
-void connect_to_peer (const char *, int *, sockaddr_storage *, char *, int *);
+void connect_to_peer (char *, int *, sockaddr_storage *, char *, int *);
 void connect_to_all_peers ();
-void connect_local_twin_socket(const char *);
+void connect_local_twin_socket(char *);
 void close_peer_sockets();
 void close_local_sockets();
 void free_peer_addr_map();
diff --git a/stat.cpp b/stat.cpp
index 41fc7e1..d426479 100644
--- a/stat.cpp
+++ b/stat.cpp
@@ -879,7 +879,7 @@ char* CStat::sRepartitionInfo(T_dynamicalRepartition * tabRepartition,
 
   if(tabRepartition != NULL) {
     // if a repartition is present, this field match the repartition name
-    sprintf(repartitionInfo, stat_delimiter);
+    strcpy(repartitionInfo, stat_delimiter);
     for(int i=0; i<(sizeOfTab-1); i++) {
       sprintf(buffer, "%lu%s", tabRepartition[i].nbInThisBorder, stat_delimiter);
       strcat(repartitionInfo, buffer);
