(doit, proto): take a function pointer to the auth function
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6178 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -370,7 +370,11 @@ send_broken_auth(int s,
|
|||||||
static int
|
static int
|
||||||
proto (int s, int errsock,
|
proto (int s, int errsock,
|
||||||
char *hostname, char *local_user, char *remote_user,
|
char *hostname, char *local_user, char *remote_user,
|
||||||
char *cmd, size_t cmd_len)
|
char *cmd, size_t cmd_len,
|
||||||
|
int (*auth_func)(int s,
|
||||||
|
struct sockaddr_in this, struct sockaddr_in that,
|
||||||
|
char *hostname, char *remote_user,
|
||||||
|
char *local_user, size_t cmd_len, char *cmd))
|
||||||
{
|
{
|
||||||
struct sockaddr_in erraddr;
|
struct sockaddr_in erraddr;
|
||||||
int errsock2;
|
int errsock2;
|
||||||
@@ -423,33 +427,12 @@ proto (int s, int errsock,
|
|||||||
}
|
}
|
||||||
close (errsock);
|
close (errsock);
|
||||||
|
|
||||||
#ifdef KRB4
|
if ((*auth_func)(s, thisaddr, thataddr, hostname,
|
||||||
if (auth_method == AUTH_KRB4) {
|
remote_user, local_user,
|
||||||
if(send_krb4_auth (s, thisaddr, thataddr,
|
cmd_len, cmd)) {
|
||||||
hostname, remote_user, local_user,
|
close (errsock2);
|
||||||
cmd_len, cmd)){
|
return 1;
|
||||||
close (errsock2);
|
}
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
#endif /* KRB4 */
|
|
||||||
if(auth_method == AUTH_KRB5) {
|
|
||||||
if(send_krb5_auth (s, thisaddr, thataddr,
|
|
||||||
hostname, remote_user, local_user,
|
|
||||||
cmd_len, cmd)) {
|
|
||||||
close (errsock2);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
if(auth_method == AUTH_BROKEN) {
|
|
||||||
if(send_broken_auth (s, thisaddr, thataddr,
|
|
||||||
hostname, remote_user, local_user,
|
|
||||||
cmd_len, cmd)) {
|
|
||||||
close (errsock2);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
if (net_read (s, &reply, 1) != 1) {
|
if (net_read (s, &reply, 1) != 1) {
|
||||||
warn ("read");
|
warn ("read");
|
||||||
@@ -581,7 +564,8 @@ doit_broken (int argc,
|
|||||||
ret = proto (priv_socket1, priv_socket2,
|
ret = proto (priv_socket1, priv_socket2,
|
||||||
argv[optind],
|
argv[optind],
|
||||||
local_user, remote_user,
|
local_user, remote_user,
|
||||||
cmd, cmd_len);
|
cmd, cmd_len,
|
||||||
|
send_broken_auth);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -592,7 +576,11 @@ doit (char *hostname,
|
|||||||
char *local_user,
|
char *local_user,
|
||||||
int port,
|
int port,
|
||||||
char *cmd,
|
char *cmd,
|
||||||
size_t cmd_len)
|
size_t cmd_len,
|
||||||
|
int (*auth_func)(int s,
|
||||||
|
struct sockaddr_in this, struct sockaddr_in that,
|
||||||
|
char *hostname, char *remote_user,
|
||||||
|
char *local_user, size_t cmd_len, char *cmd))
|
||||||
{
|
{
|
||||||
struct hostent *hostent;
|
struct hostent *hostent;
|
||||||
struct in_addr **h;
|
struct in_addr **h;
|
||||||
@@ -636,7 +624,7 @@ doit (char *hostname,
|
|||||||
ret = proto (s, errsock,
|
ret = proto (s, errsock,
|
||||||
hostname,
|
hostname,
|
||||||
local_user, remote_user,
|
local_user, remote_user,
|
||||||
cmd, cmd_len);
|
cmd, cmd_len, auth_func);
|
||||||
close (s);
|
close (s);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -798,7 +786,8 @@ main(int argc, char **argv)
|
|||||||
tmp_port = krb5_getportbyname (context, "kshell", "tcp", 544);
|
tmp_port = krb5_getportbyname (context, "kshell", "tcp", 544);
|
||||||
|
|
||||||
auth_method = AUTH_KRB5;
|
auth_method = AUTH_KRB5;
|
||||||
ret = doit (host, user, local_user, tmp_port, cmd, cmd_len);
|
ret = doit (host, user, local_user, tmp_port, cmd, cmd_len,
|
||||||
|
send_krb5_auth);
|
||||||
}
|
}
|
||||||
#ifdef KRB4
|
#ifdef KRB4
|
||||||
if (ret && use_v4) {
|
if (ret && use_v4) {
|
||||||
@@ -812,7 +801,8 @@ main(int argc, char **argv)
|
|||||||
tmp_port = krb5_getportbyname (context, "kshell", "tcp", 544);
|
tmp_port = krb5_getportbyname (context, "kshell", "tcp", 544);
|
||||||
|
|
||||||
auth_method = AUTH_KRB4;
|
auth_method = AUTH_KRB4;
|
||||||
ret = doit (host, user, local_user, tmp_port, cmd, cmd_len);
|
ret = doit (host, user, local_user, tmp_port, cmd, cmd_len,
|
||||||
|
send_krb4_auth);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (ret && use_broken) {
|
if (ret && use_broken) {
|
||||||
|
Reference in New Issue
Block a user