Change Curl_write and it's callees to accept a const pointer.
TODO: check whether the various krb libraries don't modify the buffer and then
add a cast in krb[45].c
Index: lib/krb4.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/krb4.c,v
retrieving revision 1.47
diff -u -p -r1.47 krb4.c
--- lib/krb4.c	15 Jan 2008 23:19:02 -0000	1.47
+++ lib/krb4.c	5 May 2008 13:51:25 -0000
@@ -151,7 +151,7 @@ krb4_overhead(void *app_data, int level,
 }
 
 static int
-krb4_encode(void *app_data, void *from, int length, int level, void **to,
+krb4_encode(void *app_data, const void *from, int length, int level, void **to,
             struct connectdata *conn)
 {
   struct krb4_data *d = app_data;
Index: lib/krb4.h
===================================================================
RCS file: /cvsroot/curl/curl/lib/krb4.h,v
retrieving revision 1.12
diff -u -p -r1.12 krb4.h
--- lib/krb4.h	1 Jul 2007 22:01:19 -0000	1.12
+++ lib/krb4.h	5 May 2008 13:51:25 -0000
@@ -31,7 +31,7 @@ struct Curl_sec_client_mech {
   void (*end)(void *);
   int (*check_prot)(void *, int);
   int (*overhead)(void *, int, int);
-  int (*encode)(void *, void*, int, int, void**, struct connectdata *);
+  int (*encode)(void *, const void*, int, int, void**, struct connectdata *);
   int (*decode)(void *, void*, int, int, struct connectdata *);
 };
 
@@ -58,8 +58,8 @@ int Curl_sec_read_msg (struct connectdat
 int Curl_sec_vfprintf(struct connectdata *, FILE *, const char *, va_list);
 int Curl_sec_fprintf2(struct connectdata *conn, FILE *f, const char *fmt, ...);
 int Curl_sec_vfprintf2(struct connectdata *conn, FILE *, const char *, va_list);
-ssize_t Curl_sec_send(struct connectdata *conn, int, char *, int);
-int Curl_sec_write(struct connectdata *conn, int, char *, int);
+ssize_t Curl_sec_send(struct connectdata *conn, int, const char *, int);
+int Curl_sec_write(struct connectdata *conn, int, const char *, int);
 
 void Curl_sec_end (struct connectdata *);
 int Curl_sec_login (struct connectdata *);
Index: lib/krb5.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/krb5.c,v
retrieving revision 1.5
diff -u -p -r1.5 krb5.c
--- lib/krb5.c	7 Apr 2008 09:26:31 -0000	1.5
+++ lib/krb5.c	5 May 2008 13:51:25 -0000
@@ -116,7 +116,7 @@ krb5_overhead(void *app_data, int level,
 }
 
 static int
-krb5_encode(void *app_data, void *from, int length, int level, void **to,
+krb5_encode(void *app_data, const void *from, int length, int level, void **to,
             struct connectdata *conn)
 {
   gss_ctx_id_t *context = app_data;
Index: lib/security.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/security.c,v
retrieving revision 1.35
diff -u -p -r1.35 security.c
--- lib/security.c	7 Nov 2007 09:21:36 -0000	1.35
+++ lib/security.c	5 May 2008 13:51:25 -0000
@@ -237,7 +237,7 @@ Curl_sec_read(struct connectdata *conn, 
 }
 
 static int
-sec_send(struct connectdata *conn, int fd, char *from, int length)
+sec_send(struct connectdata *conn, int fd, const char *from, int length)
 {
   int bytes;
   void *buf;
@@ -292,7 +292,7 @@ Curl_sec_fflush_fd(struct connectdata *c
 }
 
 int
-Curl_sec_write(struct connectdata *conn, int fd, char *buffer, int length)
+Curl_sec_write(struct connectdata *conn, int fd, const char *buffer, int length)
 {
   int len = conn->buffer_size;
   int tx = 0;
@@ -315,7 +315,7 @@ Curl_sec_write(struct connectdata *conn,
 }
 
 ssize_t
-Curl_sec_send(struct connectdata *conn, int num, char *buffer, int length)
+Curl_sec_send(struct connectdata *conn, int num, const char *buffer, int length)
 {
   curl_socket_t fd = conn->sock[num];
   return (ssize_t)Curl_sec_write(conn, fd, buffer, length);
Index: lib/sendf.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/sendf.c,v
retrieving revision 1.141
diff -u -p -r1.141 sendf.c
--- lib/sendf.c	20 Feb 2008 09:56:26 -0000	1.141
+++ lib/sendf.c	5 May 2008 13:51:25 -0000
@@ -312,7 +312,7 @@ CURLcode Curl_sendf(curl_socket_t sockfd
 
 static ssize_t send_plain(struct connectdata *conn,
                           int num,
-                          void *mem,
+                          const void *mem,
                           size_t len)
 {
   curl_socket_t sockfd = conn->sock[num];
@@ -347,7 +347,7 @@ static ssize_t send_plain(struct connect
  */
 CURLcode Curl_write(struct connectdata *conn,
                     curl_socket_t sockfd,
-                    void *mem,
+                    const void *mem,
                     size_t len,
                     ssize_t *written)
 {
Index: lib/sendf.h
===================================================================
RCS file: /cvsroot/curl/curl/lib/sendf.h,v
retrieving revision 1.42
diff -u -p -r1.42 sendf.h
--- lib/sendf.h	29 Oct 2007 20:57:03 -0000	1.42
+++ lib/sendf.h	5 May 2008 13:51:25 -0000
@@ -65,7 +65,7 @@ int Curl_read(struct connectdata *conn, 
 /* internal write-function, does plain socket, SSL and krb4 */
 CURLcode Curl_write(struct connectdata *conn,
                     curl_socket_t sockfd,
-                    void *mem, size_t len,
+                    const void *mem, size_t len,
                     ssize_t *written);
 
 /* the function used to output verbose information */
Index: lib/ssh.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/ssh.c,v
retrieving revision 1.99
diff -u -p -r1.99 ssh.c
--- lib/ssh.c	3 Apr 2008 20:56:59 -0000	1.99
+++ lib/ssh.c	5 May 2008 13:51:25 -0000
@@ -2199,7 +2199,7 @@ static CURLcode scp_done(struct connectd
 
 /* return number of received (decrypted) bytes */
 ssize_t Curl_scp_send(struct connectdata *conn, int sockindex,
-                      void *mem, size_t len)
+                      const void *mem, size_t len)
 {
   ssize_t nwrite;
   (void)sockindex; /* we only support SCP on the fixed known primary socket */
@@ -2347,7 +2347,7 @@ static CURLcode sftp_done(struct connect
 
 /* return number of sent bytes */
 ssize_t Curl_sftp_send(struct connectdata *conn, int sockindex,
-                       void *mem, size_t len)
+                       const void *mem, size_t len)
 {
   ssize_t nwrite;   /* libssh2_sftp_write() used to return size_t in 0.14
                        but is changed to ssize_t in 0.15. These days we don't
Index: lib/ssh.h
===================================================================
RCS file: /cvsroot/curl/curl/lib/ssh.h,v
retrieving revision 1.9
diff -u -p -r1.9 ssh.h
--- lib/ssh.h	12 Oct 2007 13:36:38 -0000	1.9
+++ lib/ssh.h	5 May 2008 13:51:25 -0000
@@ -29,12 +29,12 @@ extern const struct Curl_handler Curl_ha
 extern const struct Curl_handler Curl_handler_sftp;
 
 ssize_t Curl_scp_send(struct connectdata *conn, int sockindex,
-                      void *mem, size_t len);
+                      const void *mem, size_t len);
 ssize_t Curl_scp_recv(struct connectdata *conn, int sockindex,
                       char *mem, size_t len);
 
 ssize_t Curl_sftp_send(struct connectdata *conn, int sockindex,
-                       void *mem, size_t len);
+                       const void *mem, size_t len);
 ssize_t Curl_sftp_recv(struct connectdata *conn, int sockindex,
                        char *mem, size_t len);
 
Index: lib/sslgen.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/sslgen.c,v
retrieving revision 1.36
diff -u -p -r1.36 sslgen.c
--- lib/sslgen.c	20 Feb 2008 09:56:26 -0000	1.36
+++ lib/sslgen.c	5 May 2008 13:51:25 -0000
@@ -578,7 +578,7 @@ struct curl_slist *Curl_ssl_engines_list
 /* return number of sent (non-SSL) bytes */
 ssize_t Curl_ssl_send(struct connectdata *conn,
                       int sockindex,
-                      void *mem,
+                      const void *mem,
                       size_t len)
 {
 #ifdef USE_SSLEAY
Index: lib/sslgen.h
===================================================================
RCS file: /cvsroot/curl/curl/lib/sslgen.h,v
retrieving revision 1.11
diff -u -p -r1.11 sslgen.h
--- lib/sslgen.h	27 Aug 2007 06:31:28 -0000	1.11
+++ lib/sslgen.h	5 May 2008 13:51:25 -0000
@@ -44,7 +44,7 @@ CURLcode Curl_ssl_set_engine(struct Sess
 CURLcode Curl_ssl_set_engine_default(struct SessionHandle *data);
 ssize_t Curl_ssl_send(struct connectdata *conn,
                       int sockindex,
-                      void *mem,
+                      const void *mem,
                       size_t len);
 ssize_t Curl_ssl_recv(struct connectdata *conn, /* connection data */
                       int sockindex,            /* socketindex */
Index: lib/ssluse.c
===================================================================
RCS file: /cvsroot/curl/curl/lib/ssluse.c,v
retrieving revision 1.197
diff -u -p -r1.197 ssluse.c
--- lib/ssluse.c	14 Apr 2008 15:26:34 -0000	1.197
+++ lib/ssluse.c	5 May 2008 13:51:25 -0000
@@ -1872,7 +1872,7 @@ Curl_ossl_connect(struct connectdata *co
 /* return number of sent (non-SSL) bytes */
 ssize_t Curl_ossl_send(struct connectdata *conn,
                        int sockindex,
-                       void *mem,
+                       const void *mem,
                        size_t len)
 {
   /* SSL_write() is said to return 'int' while write() and send() returns
Index: lib/ssluse.h
===================================================================
RCS file: /cvsroot/curl/curl/lib/ssluse.h,v
retrieving revision 1.29
diff -u -p -r1.29 ssluse.h
--- lib/ssluse.h	29 Jul 2007 12:54:05 -0000	1.29
+++ lib/ssluse.h	5 May 2008 13:51:25 -0000
@@ -58,7 +58,7 @@ void Curl_ossl_cleanup(void);
 
 ssize_t Curl_ossl_send(struct connectdata *conn,
                        int sockindex,
-                       void *mem,
+                       const void *mem,
                        size_t len);
 ssize_t Curl_ossl_recv(struct connectdata *conn, /* connection data */
                        int num,                  /* socketindex */

