diff --git a/callerid.c b/callerid.c
index 339c334c665460efd9649c6b188826cf918b941e..b1d030e426fdbde846716c03255d32fa84a64fe7 100755
--- a/callerid.c
+++ b/callerid.c
@@ -543,7 +543,7 @@ int callerid_generate(unsigned char *buf, char *number, char *name, int flags, i
 	float cr = 1.0;
 	float ci = 0.0;
 	float scont = 0.0;
-	unsigned char msg[256];
+	char msg[256];
 	len = callerid_genmsg(msg, sizeof(msg), number, name, flags);
 	if (!callwaiting) {
 		/* Wait a half a second */
diff --git a/channels/chan_modem_i4l.c b/channels/chan_modem_i4l.c
index ddcf3810bebc5cd9351e120448d400292c7f1a1f..432030aa99b2e7c881cab0e00dd16a9018aa8d41 100755
--- a/channels/chan_modem_i4l.c
+++ b/channels/chan_modem_i4l.c
@@ -316,7 +316,7 @@ static struct ast_frame *i4l_handle_escape(struct ast_modem_pvt *p, char esc)
 
 static struct ast_frame *i4l_read(struct ast_modem_pvt *p)
 {
-	unsigned char result[256];
+	char result[256];
 	short *b;
 	struct ast_frame *f=NULL;
 	int res;
@@ -426,7 +426,7 @@ static struct ast_frame *i4l_read(struct ast_modem_pvt *p)
 						if (!f)
 							return NULL;
 					} else {
-						*(b++) = AST_MULAW(result[x]);
+						*(b++) = AST_MULAW((int)result[x]);
 						p->obuflen += 2;
 					}
 				}
diff --git a/loader.c b/loader.c
index d03280300ff158caa380fa369422971d4e56dea6..4abd15b2a65326a24702ecbbce69509ae9bf40a2 100755
--- a/loader.c
+++ b/loader.c
@@ -49,7 +49,7 @@ AST_MUTEX_DEFINE_STATIC(reloadlock);
 static struct module *module_list=NULL;
 static int modlistver = 0;
 
-static char expected_key[] =
+static unsigned char expected_key[] =
 { 0x8e, 0x93, 0x22, 0x83, 0xf5, 0xc3, 0xc0, 0x75,
   0xff, 0x8b, 0xa9, 0xbe, 0x7c, 0x43, 0x74, 0x63 };
 
@@ -85,7 +85,7 @@ static int printdigest(unsigned char *d)
 	return 0;
 }
 
-static int key_matches(char *key1, char *key2)
+static int key_matches(unsigned char *key1, unsigned char *key2)
 {
 	int match = 1;
 	int x;
@@ -95,12 +95,12 @@ static int key_matches(char *key1, char *key2)
 	return match;
 }
 
-static int verify_key(char *key)
+static int verify_key(unsigned char *key)
 {
 	struct MD5Context c;
-	char digest[16];
+	unsigned char digest[16];
 	MD5Init(&c);
-	MD5Update(&c, key, strlen(key));
+	MD5Update(&c, key, strlen((char *)key));
 	MD5Final(digest, &c);
 	if (key_matches(expected_key, digest))
 		return 0;
@@ -266,7 +266,7 @@ static int __load_resource(const char *resource_name, const struct ast_config *c
 #ifdef RTLD_GLOBAL
 	char *val;
 #endif
-	char *key;
+	unsigned char *key;
 	char tmp[80];
 
 	if (strncasecmp(resource_name, "res_", 4)) {
@@ -356,7 +356,7 @@ static int __load_resource(const char *resource_name, const struct ast_config *c
 	if (m->reload == NULL)
 		m->reload = dlsym(m->lib, "_reload");
 
-	if (!m->key || !(key = m->key())) {
+	if (!m->key || !(key = (unsigned char *) m->key())) {
 		ast_log(LOG_WARNING, "Key routine returned NULL in module %s\n", fn);
 		key = NULL;
 		errors++;
diff --git a/manager.c b/manager.c
index fbe8c831e3ee767cd08e04826a1067e56a2e8c81..d0c3eef2b7c5085a1025704c0fc5a40e05d59739 100755
--- a/manager.c
+++ b/manager.c
@@ -483,8 +483,8 @@ static int authenticate(struct mansession *s, struct message *m)
 						struct MD5Context md5;
 						unsigned char digest[16];
 						MD5Init(&md5);
-						MD5Update(&md5, s->challenge, strlen(s->challenge));
-						MD5Update(&md5, password, strlen(password));
+						MD5Update(&md5, (unsigned char *) s->challenge, strlen(s->challenge));
+						MD5Update(&md5, (unsigned char *) password, strlen(password));
 						MD5Final(digest, &md5);
 						for (x=0;x<16;x++)
 							len += sprintf(md5key + len, "%2.2x", digest[x]);
diff --git a/res/res_crypto.c b/res/res_crypto.c
index 796515ee35057c201821c4f7ce11db56ee7c4018..35abfa6fc7237277f67f20a45e7fff2d47a8034d 100755
--- a/res/res_crypto.c
+++ b/res/res_crypto.c
@@ -138,7 +138,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
 	int ktype = 0;
 	char *c = NULL;
 	char ffname[256];
-	char digest[16];
+	unsigned char digest[16];
 	FILE *f;
 	struct MD5Context md5;
 	struct ast_key *key;
@@ -180,7 +180,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
 		memset(buf, 0, 256);
 		fgets(buf, sizeof(buf), f);
 		if (!feof(f)) {
-			MD5Update(&md5, buf, strlen(buf));
+			MD5Update(&md5, (unsigned char *) buf, strlen(buf));
 		}
 	}
 	MD5Final(digest, &md5);
@@ -306,7 +306,7 @@ static char *binary(int y, int len)
 int ast_sign_bin(struct ast_key *key, char *msg, int msglen, unsigned char *dsig)
 {
 	unsigned char digest[20];
-	int siglen = 128;
+	unsigned int siglen = 128;
 	int res;
 
 	if (key->ktype != AST_KEY_PRIVATE) {