Fixes for compiler warnings

The code has been cleaned up to
1. provide proper prototypes for functions that take no arguments (void),
2. avoid signedness issues, and
3. provide missing cases for switch statements.

Change-Id: I9e84ddb9ef6594c374ad817330a43b22642ebb33
diff --git a/ccm.c b/ccm.c
index dfd9ef7..c9362e5 100644
--- a/ccm.c
+++ b/ccm.c
@@ -31,11 +31,11 @@
 #define MASK_L(_L) ((1 << 8 * _L) - 1)
 
 #define SET_COUNTER(A,L,cnt,C) {					\
-    int i;								\
+    unsigned int i_;                                                    \
     memset((A) + DTLS_CCM_BLOCKSIZE - (L), 0, (L));			\
     (C) = (cnt) & MASK_L(L);						\
-    for (i = DTLS_CCM_BLOCKSIZE - 1; (C) && (i > (L)); --i, (C) >>= 8)	\
-      (A)[i] |= (C) & 0xFF;						\
+    for (i_ = DTLS_CCM_BLOCKSIZE - 1; (C) && (i_ > (L)); --i_, (C) >>= 8) \
+      (A)[i_] |= (C) & 0xFF;						\
   }
 
 static inline void 
@@ -45,7 +45,7 @@
        size_t lm,      /* l(m) message length */
        unsigned char nonce[DTLS_CCM_BLOCKSIZE],
        unsigned char *result) {
-  int i;
+  unsigned int i;
 
   result[0] = CCM_FLAGS(la, M, L);
 
diff --git a/crypto.c b/crypto.c
index 0b2e5f7..7394d40 100644
--- a/crypto.c
+++ b/crypto.c
@@ -63,11 +63,11 @@
 }
 
 #ifndef WITH_CONTIKI
-void crypto_init()
+void crypto_init(void)
 {
 }
 
-static dtls_handshake_parameters_t *dtls_handshake_malloc() {
+static dtls_handshake_parameters_t *dtls_handshake_malloc(void) {
   return malloc(sizeof(dtls_handshake_parameters_t));
 }
 
@@ -75,7 +75,7 @@
   free(handshake);
 }
 
-static dtls_security_parameters_t *dtls_security_malloc() {
+static dtls_security_parameters_t *dtls_security_malloc(void) {
   return malloc(sizeof(dtls_security_parameters_t));
 }
 
@@ -88,12 +88,12 @@
 MEMB(handshake_storage, dtls_handshake_parameters_t, DTLS_HANDSHAKE_MAX);
 MEMB(security_storage, dtls_security_parameters_t, DTLS_SECURITY_MAX);
 
-void crypto_init() {
+void crypto_init(void) {
   memb_init(&handshake_storage);
   memb_init(&security_storage);
 }
 
-static dtls_handshake_parameters_t *dtls_handshake_malloc() {
+static dtls_handshake_parameters_t *dtls_handshake_malloc(void) {
   return memb_alloc(&handshake_storage);
 }
 
@@ -101,7 +101,7 @@
   memb_free(&handshake_storage, handshake);
 }
 
-static dtls_security_parameters_t *dtls_security_malloc() {
+static dtls_security_parameters_t *dtls_security_malloc(void) {
   return memb_alloc(&security_storage);
 }
 
@@ -110,7 +110,7 @@
 }
 #endif /* WITH_CONTIKI */
 
-dtls_handshake_parameters_t *dtls_handshake_new()
+dtls_handshake_parameters_t *dtls_handshake_new(void)
 {
   dtls_handshake_parameters_t *handshake;
 
@@ -142,7 +142,7 @@
   dtls_handshake_dealloc(handshake);
 }
 
-dtls_security_parameters_t *dtls_security_new()
+dtls_security_parameters_t *dtls_security_new(void)
 {
   dtls_security_parameters_t *security;
 
@@ -182,6 +182,7 @@
   unsigned char tmp[DTLS_HMAC_DIGEST_SIZE];
   size_t dlen;			/* digest length */
   size_t len = 0;			/* result length */
+  (void)h;
 
   hmac_a = dtls_hmac_new(key, keylen);
   if (!hmac_a)
@@ -275,6 +276,7 @@
 		 unsigned char *nounce,
 		 const unsigned char *aad, size_t la) {
   long int len;
+  (void)src;
 
   assert(ccm_ctx);
 
@@ -292,6 +294,7 @@
 		 unsigned char *nounce,
 		 const unsigned char *aad, size_t la) {
   long int len;
+  (void)src;
 
   assert(ccm_ctx);
 
diff --git a/dtls.c b/dtls.c
index 86e2b71..d0a8c33 100644
--- a/dtls.c
+++ b/dtls.c
@@ -168,7 +168,7 @@
 static dtls_context_t the_dtls_context;
 
 static inline dtls_context_t *
-malloc_context() {
+malloc_context(void) {
   return &the_dtls_context;
 }
 
@@ -179,7 +179,7 @@
 #else /* WITH_CONTIKI */
 
 static inline dtls_context_t *
-malloc_context() {
+malloc_context(void) {
   return (dtls_context_t *)malloc(sizeof(dtls_context_t));
 }
 
@@ -190,7 +190,7 @@
 #endif
 
 void
-dtls_init() {
+dtls_init(void) {
   dtls_clock_init();
   crypto_init();
   netq_init();
@@ -312,7 +312,8 @@
 		   uint8 *msg, size_t msglen,
 		   uint8 *cookie, int *clen) {
   unsigned char buf[DTLS_HMAC_MAX];
-  size_t len, e;
+  size_t e;
+  int len;
 
   /* create cookie with HMAC-SHA256 over:
    * - SECRET
@@ -487,6 +488,7 @@
 #ifdef DTLS_ECC
   return cipher == TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8;
 #else
+  (void)cipher;
   return 0;
 #endif /* DTLS_ECC */
 }
@@ -518,6 +520,8 @@
   return ctx && ctx->h && ((!is_client && ctx->h->get_ecdsa_key) || 
 			   (is_client && ctx->h->verify_ecdsa_key));
 #else
+  (void)ctx;
+  (void)is_client;
   return 0;
 #endif /* DTLS_ECC */
 }
@@ -529,6 +533,7 @@
 #ifdef DTLS_ECC
   return ctx && ctx->h && ctx->h->get_ecdsa_key && ctx->h->verify_ecdsa_key;
 #else
+  (void)ctx;
   return 0;
 #endif /* DTLS_ECC */
 }
@@ -569,6 +574,7 @@
 hs_attempt_with_existing_peer(uint8_t *msg, size_t msglen,
     dtls_peer_t *peer)
 {
+  (void)msglen;
     if ((peer) && (peer->state == DTLS_STATE_CONNECTED)) {
       if (msg[0] == DTLS_CT_HANDSHAKE) {
         uint16_t msg_epoch = dtls_uint16_to_int(DTLS_RECORD_HEADER(msg)->epoch);
@@ -659,6 +665,7 @@
   int pre_master_len = 0;
   dtls_security_parameters_t *security = dtls_security_params_next(peer);
   uint8 master_secret[DTLS_MASTER_SECRET_LENGTH];
+  (void)role; /* The macro dtls_kb_size() does not use role. */
 
   if (!security) {
     return dtls_alert_fatal_create(DTLS_ALERT_INTERNAL_ERROR);
@@ -711,8 +718,26 @@
     break;
   }
 #endif /* DTLS_ECC */
+  case TLS_NULL_WITH_NULL_NULL:
+    assert(!"calculate_key_block: tried to use NULL cipher\n");
+    return dtls_alert_fatal_create(DTLS_ALERT_INSUFFICIENT_SECURITY);
+
+    /* The following cases cover the enum symbols that are not
+     * included in this build. These must be kept just above the
+     * default case as they do nothing but fall through.
+     */
+#ifndef DTLS_PSK
+  case TLS_PSK_WITH_AES_128_CCM_8:
+    /* fall through to default */
+#endif /* !DTLS_PSK */
+
+#ifndef DTLS_ECC
+  case TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8:
+    /* fall through to default */
+#endif /* !DTLS_ECC */
+
   default:
-    dtls_crit("calculate_key_block: unknown cipher\n");
+    dtls_crit("calculate_key_block: unknown cipher %x04 \n", handshake->cipher);
     return dtls_alert_fatal_create(DTLS_ALERT_INTERNAL_ERROR);
   }
 
@@ -954,7 +979,8 @@
 dtls_update_parameters(dtls_context_t *ctx, 
 		       dtls_peer_t *peer,
 		       uint8 *data, size_t data_length) {
-  int i, j;
+  int i;
+  unsigned int j;
   int ok;
   dtls_handshake_parameters_t *config = peer->handshake_params;
   dtls_security_parameters_t *security = dtls_security_params(peer);
@@ -1059,7 +1085,7 @@
 check_client_keyexchange(dtls_context_t *ctx, 
 			 dtls_handshake_parameters_t *handshake,
 			 uint8 *data, size_t length) {
-
+  (void)ctx;
 #ifdef DTLS_ECC
   if (is_tls_ecdhe_ecdsa_with_aes_128_ccm_8(handshake->cipher)) {
 
@@ -1160,6 +1186,7 @@
   size_t digest_length, label_size;
   const unsigned char *label;
   unsigned char buf[DTLS_HMAC_MAX];
+  (void)ctx;
 
   if (data_length < DTLS_HS_LENGTH + DTLS_FIN_LENGTH)
     return dtls_alert_fatal_create(DTLS_ALERT_HANDSHAKE_FAILURE);
@@ -1532,7 +1559,7 @@
   /* Guess number of bytes application data actually sent:
    * dtls_prepare_record() tells us in len the number of bytes to
    * send, res will contain the bytes actually sent. */
-  return res <= 0 ? res : overall_len - (len - res);
+  return res <= 0 ? res : (int)(overall_len - (len - (unsigned int)res));
 }
 
 static inline int
@@ -1874,7 +1901,7 @@
     p += sizeof(uint8);
   }
 
-  assert(p - buf <= sizeof(buf));
+  assert((buf <= p) && ((unsigned int)(p - buf) <= sizeof(buf)));
 
   /* TODO use the same record sequence number as in the ClientHello,
      see 4.2.1. Denial-of-Service Countermeasures */
@@ -2060,7 +2087,7 @@
   memcpy(p, psk_hint, len);
   p += len;
 
-  assert(p - buf <= sizeof(buf));
+  assert((buf <= p) && ((unsigned int)(p - buf) <= sizeof(buf)));
 
   return dtls_send_handshake_msg(ctx, peer, DTLS_HT_SERVER_KEY_EXCHANGE,
 				 buf, p - buf);
@@ -2278,12 +2305,31 @@
     break;
   }
 #endif /* DTLS_ECC */
+
+  case TLS_NULL_WITH_NULL_NULL:
+    assert(!"NULL cipher requested");
+    return dtls_alert_fatal_create(DTLS_ALERT_INSUFFICIENT_SECURITY);
+
+    /* The following cases cover the enum symbols that are not
+     * included in this build. These must be kept just above the
+     * default case as they do nothing but fall through.
+     */
+#ifndef DTLS_PSK
+  case TLS_PSK_WITH_AES_128_CCM_8:
+    /* fall through to default */
+#endif /* !DTLS_PSK */
+
+#ifndef DTLS_ECC
+  case TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8:
+    /* fall through to default */
+#endif /* !DTLS_ECC */
+
   default:
-    dtls_crit("cipher not supported\n");
+    dtls_crit("cipher %x04 not supported\n", handshake->cipher);
     return dtls_alert_fatal_create(DTLS_ALERT_INTERNAL_ERROR);
   }
 
-  assert(p - buf <= sizeof(buf));
+  assert((buf <= p) && ((unsigned int)(p - buf) <= sizeof(buf)));
 
   return dtls_send_handshake_msg(ctx, peer, DTLS_HT_CLIENT_KEY_EXCHANGE,
 				 buf, p - buf);
@@ -2351,7 +2397,7 @@
 
   p += DTLS_FIN_LENGTH;
 
-  assert(p - buf <= sizeof(buf));
+  assert((buf <= p) && ((unsigned int)(p - buf) <= sizeof(buf)));
 
   return dtls_send_handshake_msg(ctx, peer, DTLS_HT_FINISHED,
 				 buf, p - buf);
@@ -2499,7 +2545,7 @@
     p += sizeof(uint8);
   }
 
-  assert(p - buf <= sizeof(buf));
+  assert((buf <= p) && ((unsigned int)(p - buf) <= sizeof(buf)));
 
   if (cookie_length != 0)
     clear_hs_hash(peer);
@@ -2738,6 +2784,7 @@
 {
   dtls_handshake_parameters_t *config = peer->handshake_params;
   uint16_t len;
+  (void)ctx;
 
   update_hs_hash(peer, data, data_length);
 
@@ -2779,6 +2826,7 @@
   int auth_alg;
   int sig_alg;
   int hash_alg;
+  (void)ctx;
 
   update_hs_hash(peer, data, data_length);
 
@@ -3522,6 +3570,7 @@
 {
   int err;
   dtls_handshake_parameters_t *handshake = peer->handshake_params;
+  (void)record_header;
 
   /* A CCS message is handled after a KeyExchange message was
    * received from the client. When security parameters have been
@@ -3559,6 +3608,7 @@
 handle_alert(dtls_context_t *ctx, dtls_peer_t *peer, 
 	     uint8 *record_header, uint8 *data, size_t data_length) {
   int free_peer = 0;		/* indicates whether to free peer */
+  (void)record_header;
 
   if (data_length < 2)
     return dtls_alert_fatal_create(DTLS_ALERT_DECODE_ERROR);
@@ -3727,7 +3777,7 @@
           state = DTLS_STATE_WAIT_CLIENTHELLO;
           role = DTLS_SERVER;       
         } else {
-	  int err =  dtls_alert_fatal_create(DTLS_ALERT_DECRYPT_ERROR);
+	  err =  dtls_alert_fatal_create(DTLS_ALERT_DECRYPT_ERROR);
           dtls_info("decrypt_verify() failed\n");
 	  if (peer->state < DTLS_STATE_CONNECTED) {
 	    dtls_alert_send_from_err(ctx, peer, &peer->session, err);
diff --git a/dtls_debug.c b/dtls_debug.c
index f4626db..7b3ae10 100644
--- a/dtls_debug.c
+++ b/dtls_debug.c
@@ -213,7 +213,7 @@
   va_list ap;
   FILE *log_fd;
 
-  if (maxlog < level)
+  if (maxlog < (int)level)
     return;
 
   log_fd = level <= DTLS_LOG_CRIT ? stderr : stdout;
@@ -295,7 +295,7 @@
   FILE *log_fd;
   int n = 0;
 
-  if (maxlog < level)
+  if (maxlog < (int)level)
     return;
 
   log_fd = level <= DTLS_LOG_CRIT ? stderr : stdout;
diff --git a/dtls_debug.h b/dtls_debug.h
index 8cff829..d46b6da 100644
--- a/dtls_debug.h
+++ b/dtls_debug.h
@@ -33,7 +33,7 @@
 #ifdef CONTIKI_TARGET_MBXXX
 extern char __Stack_Init, _estack;
 
-static inline void check_stack() {
+static inline void check_stack(void) {
   const char *p = &__Stack_Init;
   while (p < &_estack && *p == 0x38) {
     p++;
@@ -42,13 +42,13 @@
   PRINTF("Stack: %d bytes used (%d free)\n", &_estack - p, p - &__Stack_Init);
 }
 #else /* CONTIKI_TARGET_MBXXX */
-static inline void check_stack() {
+static inline void check_stack(void) {
 }
 #endif /* CONTIKI_TARGET_MBXXX */
 #else /* WITH_CONTKI */
 #define PRINTF(...)
 
-static inline void check_stack() {
+static inline void check_stack(void) {
 }
 #endif
 
@@ -60,14 +60,14 @@
 #ifndef WITH_CONTIKI
 /* Contiki does not have the required PACKAGE_ variables configured */
 /** Returns a zero-terminated string with the name of this library. */
-const char *dtls_package_name();
+const char *dtls_package_name(void);
 
 /** Returns a zero-terminated string with the library version. */
-const char *dtls_package_version();
+const char *dtls_package_version(void);
 #endif /* WITH_CONTIKI */
 
 /** Returns the current log level. */
-log_t dtls_get_log_level();
+log_t dtls_get_log_level(void);
 
 /** Sets the log level to the specified value. */
 void dtls_set_log_level(log_t level);
diff --git a/hmac.c b/hmac.c
index a7d5216..e16eca5 100644
--- a/hmac.c
+++ b/hmac.c
@@ -33,7 +33,7 @@
 #include <stdlib.h>
 
 static inline dtls_hmac_context_t *
-dtls_hmac_context_new() {
+dtls_hmac_context_new(void) {
   return (dtls_hmac_context_t *)malloc(sizeof(dtls_hmac_context_t));
 }
 
@@ -47,7 +47,7 @@
 MEMB(hmac_context_storage, dtls_hmac_context_t, DTLS_HASH_MAX);
 
 static inline dtls_hmac_context_t *
-dtls_hmac_context_new() {
+dtls_hmac_context_new(void) {
   return (dtls_hmac_context_t *)memb_alloc(&hmac_context_storage);
 }
 
@@ -57,7 +57,7 @@
 }
 
 void
-dtls_hmac_storage_init() {
+dtls_hmac_storage_init(void) {
   memb_init(&hmac_context_storage);
 }
 #endif /* WITH_CONTIKI */
diff --git a/netq.h b/netq.h
index a5b71d3..c8821ac 100644
--- a/netq.h
+++ b/netq.h
@@ -64,10 +64,10 @@
 } netq_t;
 
 #ifndef WITH_CONTIKI
-static inline void netq_init()
+static inline void netq_init(void)
 { }
 #else
-void netq_init();
+void netq_init(void);
 #endif
 
 /** 
diff --git a/peer.c b/peer.c
index 40ff605..7a02444 100644
--- a/peer.c
+++ b/peer.c
@@ -20,12 +20,12 @@
 #include "dtls_debug.h"
 
 #ifndef WITH_CONTIKI
-void peer_init()
+void peer_init(void)
 {
 }
 
 static inline dtls_peer_t *
-dtls_malloc_peer() {
+dtls_malloc_peer(void) {
   return (dtls_peer_t *)malloc(sizeof(dtls_peer_t));
 }
 
@@ -42,12 +42,12 @@
 MEMB(peer_storage, dtls_peer_t, DTLS_PEER_MAX);
 
 void
-peer_init() {
+peer_init(void) {
   memb_init(&peer_storage);
 }
 
 static inline dtls_peer_t *
-dtls_malloc_peer() {
+dtls_malloc_peer(void) {
   return memb_alloc(&peer_storage);
 }