Fix for MSVC Compiler warnings
Fixes Microsoft Visual C compiler warnings in multiple files. All issues
with type mismatches.
diff --git a/library/ccm.c b/library/ccm.c
index e397e0a..bc3700f 100644
--- a/library/ccm.c
+++ b/library/ccm.c
@@ -140,7 +140,7 @@
{
int ret;
unsigned char i;
- unsigned char q = 16 - 1 - iv_len;
+ unsigned char q;
size_t len_left, olen;
unsigned char b[16];
unsigned char y[16];
@@ -163,6 +163,8 @@
if( add_len > 0xFF00 )
return( POLARSSL_ERR_CCM_BAD_INPUT );
+ q = 16 - 1 - (unsigned char) iv_len;
+
/*
* First block B_0:
* 0 .. 0 flags
@@ -254,7 +256,7 @@
while( len_left > 0 )
{
- unsigned char use_len = len_left > 16 ? 16 : len_left;
+ size_t use_len = len_left > 16 ? 16 : len_left;
if( mode == CCM_ENCRYPT )
{
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index f0a88fe..90d5ac7 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2981,7 +2981,17 @@
ssl->handshake->pmslen = 48;
/* mask = diff ? 0xff : 0x00 */
+ /* MSVC has a warning about unary minus on unsigned, but this is
+ * well-defined and precisely what we want to do here */
+#if defined(_MSC_VER)
+#pragma warning( push )
+#pragma warning( disable : 4146 )
+#endif
mask = - ( diff | - diff ) >> ( sizeof( unsigned int ) * 8 - 1 );
+#if defined(_MSC_VER)
+#pragma warning( pop )
+#endif
+
for( i = 0; i < ssl->handshake->pmslen; i++ )
pms[i] = ( mask & fake_pms[i] ) | ( (~mask) & peer_pms[i] );
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 0dd4a6c..8604997 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1484,7 +1484,7 @@
unsigned char add_data[13];
unsigned char taglen = ssl->transform_in->ciphersuite_info->flags &
POLARSSL_CIPHERSUITE_SHORT_TAG ? 8 : 16;
- unsigned char explicit_iv_len = ssl->transform_in->ivlen -
+ size_t explicit_iv_len = ssl->transform_in->ivlen -
ssl->transform_in->fixed_ivlen;
if( ssl->in_msglen < (size_t) explicit_iv_len + taglen )
diff --git a/library/x509_crt.c b/library/x509_crt.c
index b7c73df..4b831ae 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -988,7 +988,7 @@
p = filename + len;
filename[len++] = '*';
- w_ret = MultiByteToWideChar( CP_ACP, 0, filename, len, szDir,
+ w_ret = MultiByteToWideChar( CP_ACP, 0, filename, (int)len, szDir,
MAX_PATH - 3 );
if( w_ret == 0 )
return( POLARSSL_ERR_X509_BAD_INPUT_DATA );