On Sat, 15 Mar 2003, James Yonan wrote:

> Yes, I think we should try to fix if it's only a trivial cast involved to
> silence the warning.
> 
> I don't see them on gcc 2.96, even with "-Wall -W -Wpointer-arith
> -Wsign-compare -Winline".

Indeed, it takes the sun compiler or the even more picky splint utility
(www.splint.org) to see them.

The patch below doesn't fix
"crypto.c", line 228: warning: end-of-loop code not reached

also on ll. 237 259 269 273 277 281 286 299 312 327.

Fixing that would require a rewrite of crypto.c, the issue is the

do { goto ...; } while(false);

I'm not fixing this and I don't recommend changing that at this time
(after 1.3.3 maybe, if you're to fix that at all).

Here's the patch:

# buffer.c     |   14 +++++++-------
# crypto.c     |   12 ++++++------
# error.c      |    2 +-
# lzo.c        |    2 ++
# misc.c       |    2 +-
# packet_id.c  |    4 ++--
# reliable.c   |    2 ++
# session_id.c |    2 ++
# socket.c     |    4 ++--
# ssl.c        |    6 ++++--
# thread.c     |    2 ++
# tun.c        |    4 ++--
# 12 files changed, 33 insertions(+), 23 deletions(-)

Index: buffer.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/buffer.c,v
retrieving revision 1.11
diff -u -r1.11 buffer.c
--- buffer.c    15 Mar 2003 07:18:00 -0000      1.11
+++ buffer.c    15 Mar 2003 22:42:02 -0000
@@ -115,14 +115,14 @@
 {
   va_list arglist;

-  char *ptr = BEND (buf);
+  uint8_t *ptr = BEND (buf);
   int cap = buf_forward_capacity (buf);

   va_start (arglist, format);
-  vsnprintf (ptr, cap, format, arglist);
+  vsnprintf ((char *)ptr, cap, format, arglist);
   va_end (arglist);

-  buf->len += strlen (ptr);
+  buf->len += strlen ((char *)ptr);
 }

 /*
@@ -137,7 +137,7 @@
       int len = strlen (str) + 1;
       if (len < buf_forward_capacity_total (buf))
        {
-         strncpynt (buf->data + buf->capacity - len, str, len);
+         strncpynt ((char *)(buf->data + buf->capacity - len), str, len);
        }
     }
 }
@@ -148,7 +148,7 @@
 void
 convert_to_one_line (struct buffer *buf)
 {
-  char *cp = BPTR(buf);
+  uint8_t *cp = BPTR(buf);
   int len = BLEN(buf);
   while (len--)
     {
@@ -185,7 +185,7 @@
   struct gc_entry *e;
   struct gc_thread* thread = &x_gc_thread[thread_number()];

-  while (e = thread->gc_stack)
+  while ((e = thread->gc_stack))
     {
       if (e->level < level)
        break;
@@ -235,5 +235,5 @@
       buf_printf (&out, "%02x", data[i]);
     }
   buf_catrunc (&out, "[more...]");
-  return out.data;
+  return (char *)out.data;
 }
Index: crypto.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/crypto.c,v
retrieving revision 1.14
diff -u -r1.14 crypto.c
--- crypto.c    21 Feb 2003 16:14:05 -0000      1.14
+++ crypto.c    15 Mar 2003 22:42:03 -0000
@@ -184,7 +184,7 @@
          HMAC_Update (ctx->hmac, BPTR (&work), BLEN (&work));
          output = buf_prepend (&work, HMAC_size (ctx->hmac));
          ASSERT (output);
-         HMAC_Final (ctx->hmac, output, &hmac_len);
+         HMAC_Final (ctx->hmac, output, (unsigned int *)&hmac_len);
          ASSERT (hmac_len == HMAC_size (ctx->hmac));
        }

@@ -229,7 +229,7 @@

          HMAC_Update (ctx->hmac, BPTR (buf) + hmac_len,
                       BLEN (buf) - hmac_len);
-         HMAC_Final (ctx->hmac, local_hmac, &in_hmac_len);
+         HMAC_Final (ctx->hmac, local_hmac, (unsigned int *)&in_hmac_len);
          ASSERT (hmac_len == in_hmac_len);

          /* Compare locally computed HMAC with packet HMAC */
@@ -883,9 +883,9 @@
   if (fd == -1)
     msg (M_ERR, "Cannot open shared secret file %s", filename);

-  while (size = read (fd, in.data, in.capacity))
+  while ((size = read (fd, in.data, in.capacity)))
     {
-      const char *cp = in.data;
+      const char *cp = (char *)in.data;
       while (size)
        {
          const char c = *cp;
@@ -923,7 +923,7 @@
                    if (hb_index == 2)
                      {
                        unsigned int u;
-                       ASSERT(sscanf(hex_byte, "%x", &u) == 1);
+                       ASSERT(sscanf((const char *)hex_byte, "%x", &u) == 1);
                        *out++ = u;
                        hb_index = 0;
                        if (++count == keylen)
@@ -982,7 +982,7 @@
   buf_printf (&out, "%s\n", static_key_foot);

   /* write data to file */
-  len = strlen (BPTR(&out));
+  len = strlen ((char *)BPTR(&out));
   size = write (fd, BPTR(&out), len);
   if (size != len)
     msg (M_ERR, "Write error on shared secret file %s", filename);
Index: error.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/error.c,v
retrieving revision 1.15
diff -u -r1.15 error.c
--- error.c     15 Mar 2003 07:18:00 -0000      1.15
+++ error.c     15 Mar 2003 22:42:03 -0000
@@ -177,7 +177,7 @@
     {
       int nerrs = 0;
       int err;
-      while (err = ERR_get_error ())
+      while ((err = ERR_get_error ()))
        {
          snprintf (m2, ERR_BUF_SIZE, "%s: %s", m1, ERR_error_string (err, 
NULL));
          SWAP;
Index: lzo.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/lzo.c,v
retrieving revision 1.11
diff -u -r1.11 lzo.c
--- lzo.c       21 Feb 2003 16:14:06 -0000      1.11
+++ lzo.c       15 Mar 2003 22:42:03 -0000
@@ -239,4 +239,6 @@
   msg (M_INFO, " post-decompress bytes:" counter_format, 
lzo_compwork->post_decompress);
 }

+#else
+static void dummy(void) {}
 #endif /* USE_LZO */
Index: misc.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/misc.c,v
retrieving revision 1.15
diff -u -r1.15 misc.c
--- misc.c      21 Feb 2003 16:14:06 -0000      1.15
+++ misc.c      15 Mar 2003 22:42:03 -0000
@@ -285,7 +285,7 @@
       else
        buf_printf (&out, "shell command exited with error status: %d", 
cmd_ret);
     }
-  return out.data;
+  return (const char *)out.data;
 }

 /*
Index: packet_id.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/packet_id.c,v
retrieving revision 1.11
diff -u -r1.11 packet_id.c
--- packet_id.c 21 Feb 2003 16:14:06 -0000      1.11
+++ packet_id.c 15 Mar 2003 22:42:03 -0000
@@ -124,7 +124,7 @@
     }

   buf_printf (&out, " ]");
-  return out.data;
+  return (char *)out.data;
 }

 /* initialize the packet_id_persist structure in a disabled state */
@@ -265,7 +265,7 @@
     }

   buf_printf (&out, " ]");
-  return out.data;
+  return (char *)out.data;
 }

 #ifdef PID_TEST
Index: reliable.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/reliable.c,v
retrieving revision 1.10
diff -u -r1.10 reliable.c
--- reliable.c  21 Feb 2003 16:14:06 -0000      1.10
+++ reliable.c  15 Mar 2003 22:42:03 -0000
@@ -500,4 +500,6 @@

 #endif

+#else
+static void dummy(void) {}
 #endif /* USE_CRYPTO && USE_SSL*/
Index: session_id.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/session_id.c,v
retrieving revision 1.4
diff -u -r1.4 session_id.c
--- session_id.c        21 Feb 2003 16:14:06 -0000      1.4
+++ session_id.c        15 Mar 2003 22:42:03 -0000
@@ -60,4 +60,6 @@
   return format_hex (sid->id, SID_SIZE, 0);
 }

+#else
+static void dummy(void) {}
 #endif /* USE_CRYPTO && USE_SSL*/
Index: socket.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/socket.c,v
retrieving revision 1.17
diff -u -r1.17 socket.c
--- socket.c    15 Mar 2003 07:18:00 -0000      1.17
+++ socket.c    15 Mar 2003 22:42:04 -0000
@@ -255,7 +255,7 @@
            {
              char command[256];
              struct buffer out;
-             buf_set_write (&out, command, sizeof (command));
+             buf_set_write (&out, (uint8_t *)command, sizeof (command));
              buf_printf (&out, "%s %s",
                          sock->ipchange_command,
                          print_sockaddr_ex (&usa->actual, true, " "));
@@ -356,5 +356,5 @@

       buf_printf (&out, "%d", port);
     }
-  return out.data;
+  return (char *)out.data;
 }
Index: ssl.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/ssl.c,v
retrieving revision 1.30
diff -u -r1.30 ssl.c
--- ssl.c       15 Mar 2003 07:18:00 -0000      1.30
+++ ssl.c       15 Mar 2003 22:42:05 -0000
@@ -228,7 +228,7 @@
 system_safe_string (char *cp)
 {
   int c;
-  while (c = *cp)
+  while ((c = *cp))
     {
       if (isalnum (c)
          || c == '/'
@@ -494,7 +494,7 @@

   printf ("Available TLS Ciphers,\n");
   printf ("listed in order of preference:\n\n");
-  while (cipher_name = SSL_get_cipher_list (ssl, priority++))
+  while ((cipher_name = SSL_get_cipher_list (ssl, priority++)))
     printf ("%s\n", cipher_name);
   printf ("\n");

@@ -2491,4 +2491,6 @@
   return out.data;
 }

+#else
+static void dummy(void) {}
 #endif /* USE_CRYPTO && USE_SSL*/
Index: thread.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/thread.c,v
retrieving revision 1.4
diff -u -r1.4 thread.c
--- thread.c    21 Feb 2003 16:14:06 -0000      1.4
+++ thread.c    15 Mar 2003 22:42:05 -0000
@@ -175,4 +175,6 @@
     }
 }

+#else
+static void dummy(void) {}
 #endif
Index: tun.c
===================================================================
RCS file: /cvsroot/openvpn/openvpn/tun.c,v
retrieving revision 1.25
diff -u -r1.25 tun.c
--- tun.c       15 Mar 2003 07:18:00 -0000      1.25
+++ tun.c       15 Mar 2003 22:42:05 -0000
@@ -609,7 +609,7 @@
 {
   struct strbuf sbuf;
   sbuf.len = len;
-  sbuf.buf = buf;
+  sbuf.buf = (char *)buf;
   return putmsg (tt->fd, NULL, &sbuf, 0) >= 0 ? sbuf.len : -1;
 }

@@ -620,7 +620,7 @@
   int f = 0;

   sbuf.maxlen = len;
-  sbuf.buf = buf;
+  sbuf.buf = (char *)buf;
   return getmsg (tt->fd, NULL, &sbuf, &f) >= 0 ? sbuf.len : -1;
 }


Reply via email to