diff --git a/clients/gopher/go500gw.c b/clients/gopher/go500gw.c
index df93aa7f0c910667ef67eff4248ebdaf101cbd3c..6d1ed89bf16b1dbca212a4b5864a38f93442acec 100644
--- a/clients/gopher/go500gw.c
+++ b/clients/gopher/go500gw.c
@@ -776,15 +776,16 @@ char	*query;
 
 		e = ldap_first_entry( ld, res );
 		oc = ldap_get_values( ld, e, "objectClass" );
-		if ( isnonleaf( ld, oc, dn ) ) {
-			dn = ldap_get_dn( ld, e );
+		dn = ldap_get_dn( ld, e );
 
+		if ( isnonleaf( ld, oc, dn ) ) {
 			rc = do_menu( ld, fp, dn );
 
 			free( dn );
 			return( rc );
 		}
 
+		free( dn );
 		ldap_value_free( oc );
 	}
 
diff --git a/clients/gopher/setproctitle.c b/clients/gopher/setproctitle.c
index 26b42c0ceede62f7bc1e854bfef26a1f0a6aa34e..c7f832604d7c4371e1a73a981286870ee232163b 100644
--- a/clients/gopher/setproctitle.c
+++ b/clients/gopher/setproctitle.c
@@ -21,6 +21,7 @@ int	Argc;		/* original argc */
 /* VARARGS */
 setproctitle( fmt, a, b, c )
 char *fmt;
+char *a, *b, *c;
 {
 	static char *endargv = (char *)0;
 	char	*s;
diff --git a/clients/ud/util.c b/clients/ud/util.c
index 44a693e3e950cb4560aea3eec46b0a6ea57e1db1..0dd3c53c35f138d92fdcb9dcac292fa7163938ba 100644
--- a/clients/ud/util.c
+++ b/clients/ud/util.c
@@ -480,7 +480,7 @@ char *cp;
 	return(tmp);
 }
 
-char * code_to_str(i)
+char * code_to_str(int i)
 {
 	switch(i) {
 	case LDAP_MOD_ADD : return("ADD");