Pass address of request to as_rep and tgs_rep. Send KRB-ERROR.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2346 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-07-16 01:23:00 +00:00
parent 797fb13fa3
commit 8dceb8cd7f

View File

@@ -55,7 +55,8 @@ static int
process_request(krb5_context context, process_request(krb5_context context,
unsigned char *buf, unsigned char *buf,
size_t len, size_t len,
krb5_data *reply) krb5_data *reply,
const char *from)
{ {
KDC_REQ req; KDC_REQ req;
krb5_error_code err; krb5_error_code err;
@@ -63,18 +64,13 @@ process_request(krb5_context context,
gettimeofday(&now, NULL); gettimeofday(&now, NULL);
if(decode_AS_REQ(buf, len, &req, &i) == 0){ if(decode_AS_REQ(buf, len, &req, &i) == 0){
err = as_rep(context, &req, reply); err = as_rep(context, &req, reply, from);
free_AS_REQ(&req); free_AS_REQ(&req);
return err; return err;
}else{ }else if(decode_TGS_REQ(buf, len, &req, &i) == 0){
if(decode_TGS_REQ(buf, len, &req, &i) == 0){ err = tgs_rep(context, &req, reply, from);
err = tgs_rep(context, &req, reply); free_TGS_REQ(&req);
free_TGS_REQ(&req); return err;
return err;
}
}
if (maybe_version4(buf, len)){
return do_version4(buf, len, reply);
} }
return -1; return -1;
} }
@@ -85,13 +81,15 @@ do_request(krb5_context context, void *buf, size_t len,
{ {
krb5_error_code ret; krb5_error_code ret;
krb5_data reply; krb5_data reply;
char addr[128] = "<unknown address>";
if(from->sa_family == AF_INET)
strcpy(addr, inet_ntoa(((struct sockaddr_in*)from)->sin_addr));
reply.length = 0; reply.length = 0;
ret = process_request(context, buf, len, &reply); ret = process_request(context, buf, len, &reply, addr);
if(ret) if(reply.length){
warnx("%s", krb5_get_err_text(context, ret)); kdc_log(5, "sending %d bytes to %s", reply.length, addr);
else{
warnx("sending %d bytes", reply.length);
sendto(socket, reply.data, reply.length, 0, from, from_len); sendto(socket, reply.data, reply.length, 0, from, from_len);
krb5_data_free(&reply); krb5_data_free(&reply);
} }
@@ -208,7 +206,7 @@ loop(krb5_context context)
struct descr *d; struct descr *d;
int ndescr; int ndescr;
ndescr = init_sockets(&d); ndescr = init_sockets(&d);
while(1){ while(exit_flag == 0){
struct fd_set fds; struct fd_set fds;
int min_free = -1; int min_free = -1;
int max_fd = 0; int max_fd = 0;