diff --git a/sshconnect2.c b/sshconnect2.c
index cfc7b60..a565f73 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: sshconnect2.c,v 1.91 2001/12/28 14:50:54 markus Exp $");
+RCSID("$OpenBSD: sshconnect2.c,v 1.92 2001/12/28 15:06:00 markus Exp $");
 
 #include <openssl/bn.h>
 #include <openssl/md5.h>
@@ -174,12 +174,12 @@
 	int	*batch_flag;	/* flag in option struct that disables method */
 };
 
-void	input_userauth_success(int, int, u_int32_t, void *);
-void	input_userauth_failure(int, int, u_int32_t, void *);
-void	input_userauth_banner(int, int, u_int32_t, void *);
-void	input_userauth_error(int, int, u_int32_t, void *);
-void	input_userauth_info_req(int, int, u_int32_t, void *);
-void	input_userauth_pk_ok(int, int, u_int32_t, void *);
+void	input_userauth_success(int, u_int32_t, void *);
+void	input_userauth_failure(int, u_int32_t, void *);
+void	input_userauth_banner(int, u_int32_t, void *);
+void	input_userauth_error(int, u_int32_t, void *);
+void	input_userauth_info_req(int, u_int32_t, void *);
+void	input_userauth_pk_ok(int, u_int32_t, void *);
 
 int	userauth_none(Authctxt *);
 int	userauth_pubkey(Authctxt *);
@@ -307,13 +307,13 @@
 	}
 }
 void
-input_userauth_error(int type, int plen, u_int32_t seq, void *ctxt)
+input_userauth_error(int type, u_int32_t seq, void *ctxt)
 {
 	fatal("input_userauth_error: bad message during authentication: "
 	   "type %d", type);
 }
 void
-input_userauth_banner(int type, int plen, u_int32_t seq, void *ctxt)
+input_userauth_banner(int type, u_int32_t seq, void *ctxt)
 {
 	char *msg, *lang;
 	debug3("input_userauth_banner");
@@ -324,7 +324,7 @@
 	xfree(lang);
 }
 void
-input_userauth_success(int type, int plen, u_int32_t seq, void *ctxt)
+input_userauth_success(int type, u_int32_t seq, void *ctxt)
 {
 	Authctxt *authctxt = ctxt;
 	if (authctxt == NULL)
@@ -335,7 +335,7 @@
 	authctxt->success = 1;			/* break out */
 }
 void
-input_userauth_failure(int type, int plen, u_int32_t seq, void *ctxt)
+input_userauth_failure(int type, u_int32_t seq, void *ctxt)
 {
 	Authctxt *authctxt = ctxt;
 	char *authlist = NULL;
@@ -356,7 +356,7 @@
 	userauth(authctxt, authlist);
 }
 void
-input_userauth_pk_ok(int type, int plen, u_int32_t seq, void *ctxt)
+input_userauth_pk_ok(int type, u_int32_t seq, void *ctxt)
 {
 	Authctxt *authctxt = ctxt;
 	Key *key = NULL;
@@ -767,7 +767,7 @@
  * parse INFO_REQUEST, prompt user and send INFO_RESPONSE
  */
 void
-input_userauth_info_req(int type, int plen, u_int32_t seq, void *ctxt)
+input_userauth_info_req(int type, u_int32_t seq, void *ctxt)
 {
 	Authctxt *authctxt = ctxt;
 	char *name, *inst, *lang, *prompt, *response;
