--- freeradius-1.1.3/src/main/smux.c.1819888	2008-05-15 15:05:49.000000000 +0100
+++ freeradius-1.1.3/src/main/smux.c	2008-05-15 16:17:30.000000000 +0100
@@ -243,7 +243,7 @@
 	int ret;
 	u_char buf[BUFSIZ];
 	u_char *ptr, *h1, *h1e, *h2, *h2e;
-	int len, length;
+	size_t len, length;
 
 	ptr = buf;
 	len = BUFSIZ;
@@ -293,8 +293,8 @@
 	ret = send (rad_snmp.smux_fd, buf, length, 0);
 }
 
-static char *
-smux_var (char *ptr, int len, oid objid[], size_t *objid_len,
+static u_char *
+smux_var (u_char *ptr, size_t len, oid objid[], size_t *objid_len,
 		size_t *var_val_len,
 		u_char *var_val_type,
 		void **var_value)
@@ -591,8 +591,8 @@
 }
 
 /* GET message header. */
-static char *
-smux_parse_get_header (char *ptr, size_t *len, long *reqid)
+static u_char *
+smux_parse_get_header (u_char *ptr, size_t *len, long *reqid)
 {
 	u_char type;
 	long errstat;
@@ -617,7 +617,7 @@
 }
 
 static void
-smux_parse_set (char *ptr, size_t len, int action)
+smux_parse_set (u_char *ptr, size_t len, int action)
 {
 	long reqid;
 	oid my_oid[MAX_OID_LEN];
@@ -646,7 +646,7 @@
 }
 
 static void
-smux_parse_get (char *ptr, size_t len, int exact)
+smux_parse_get (u_char *ptr, size_t len, int exact)
 {
 	long reqid;
 	oid my_oid[MAX_OID_LEN];
@@ -679,7 +679,7 @@
 
 /* Parse SMUX_CLOSE message. */
 static void
-smux_parse_close (char *ptr, int len)
+smux_parse_close (u_char *ptr, int len)
 {
 	long reason = 0;
 
@@ -692,9 +692,9 @@
 
 /* SMUX_RRSP message. */
 static void
-smux_parse_rrsp (char *ptr, int len)
+smux_parse_rrsp (u_char *ptr, size_t len)
 {
-	char val;
+	u_char val;
 	long errstat;
 
 	ptr = asn_parse_int (ptr, &len, &val, &errstat, sizeof (errstat));
@@ -704,7 +704,7 @@
 
 /* Parse SMUX message. */
 static int
-smux_parse (char *ptr, int len)
+smux_parse (u_char *ptr, size_t len)
 {
 	/* this buffer we'll use for SOUT message. We could allocate it with malloc and
 		 save only static pointer/lenght, but IMHO static buffer is a faster solusion */
@@ -806,7 +806,7 @@
 int
 smux_read ()
 {
-	int len;
+	ssize_t len;
 	u_char buf[SMUXMAXPKTSIZE];
 	int ret;
 
@@ -835,7 +835,7 @@
 	DEBUG2 ("SMUX read len: %d", len);
 
 	/* Parse the message. */
-	ret = smux_parse (buf, len);
+	ret = smux_parse (buf, (size_t) len);
 
 	if (ret < 0) {
 		close (rad_snmp.smux_fd);
@@ -854,8 +854,8 @@
 {
 	u_char buf[BUFSIZ];
 	u_char *ptr;
-	int len;
-	u_long smux_proto_version;
+	size_t len;
+	long smux_proto_version;
 	u_char rad_progname[] = "radiusd";
 
 	smux_oid_dump ("SMUX open oid", smux_oid, smux_oid_len);
@@ -890,7 +890,7 @@
 	ptr = asn_build_string (ptr, &len,
 			(u_char)
 			(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR),
-			rad_snmp.smux_password, strlen(rad_snmp.smux_password));
+			(u_char *) rad_snmp.smux_password, strlen(rad_snmp.smux_password));
 
 	/* Fill in real SMUX header.	We exclude ASN header size (2). */
 	len = BUFSIZ;
@@ -904,7 +904,8 @@
 {
 	u_char buf[BUFSIZ];
 	u_char *ptr;
-	int len, ret;
+	size_t len;
+	ssize_t ret;
 	long priority;
 	long operation;
 	struct subtree *subtree;
@@ -956,7 +957,7 @@
 int
 smux_connect ()
 {
-	int ret;
+	ssize_t ret;
 
 	rad_snmp.smux_event=SMUX_NONE;
 	DEBUG2 ("SMUX connect try %d", rad_snmp.smux_failures + 1);
