allow the specification of what keytab to use
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9064 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -791,6 +791,7 @@ dispatch(krb5_context context,
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
decode_packet(krb5_context context,
|
decode_packet(krb5_context context,
|
||||||
|
krb5_keytab keytab,
|
||||||
struct sockaddr_in *admin_addr,
|
struct sockaddr_in *admin_addr,
|
||||||
struct sockaddr_in *client_addr,
|
struct sockaddr_in *client_addr,
|
||||||
krb5_data message,
|
krb5_data message,
|
||||||
@@ -809,6 +810,7 @@ decode_packet(krb5_context context,
|
|||||||
void *kadm_handle;
|
void *kadm_handle;
|
||||||
krb5_principal client;
|
krb5_principal client;
|
||||||
char *client_str;
|
char *client_str;
|
||||||
|
krb5_keytab_entry entry;
|
||||||
|
|
||||||
if(message.length < KADM_VERSIZE
|
if(message.length < KADM_VERSIZE
|
||||||
|| strncmp(msg, KADM_VERSTR, KADM_VERSIZE) != 0) {
|
|| strncmp(msg, KADM_VERSTR, KADM_VERSIZE) != 0) {
|
||||||
@@ -834,13 +836,16 @@ decode_packet(krb5_context context,
|
|||||||
make_you_loose_packet (KADM_NOMEM, reply);
|
make_you_loose_packet (KADM_NOMEM, reply);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ret = krb5_kt_read_service_key(context,
|
ret = krb5_kt_get_entry (context, keytab, principal, 0,
|
||||||
"HDB:",
|
ETYPE_DES_CBC_MD5, &entry);
|
||||||
principal,
|
krb5_kt_close (context, keytab);
|
||||||
0,
|
if (ret) {
|
||||||
/* ETYPE_DES_CBC_CRC,*/
|
krb5_free_principal(context, principal);
|
||||||
ETYPE_DES_CBC_MD5,
|
make_you_loose_packet (KADM_NO_AUTH, reply);
|
||||||
&key);
|
return;
|
||||||
|
}
|
||||||
|
ret = krb5_copy_keyblock (context, &entry.keyblock,& key);
|
||||||
|
krb5_kt_free_entry(context, &entry);
|
||||||
krb5_free_principal(context, principal);
|
krb5_free_principal(context, principal);
|
||||||
if(ret) {
|
if(ret) {
|
||||||
if(ret == KRB5_KT_NOTFOUND)
|
if(ret == KRB5_KT_NOTFOUND)
|
||||||
@@ -924,6 +929,7 @@ out:
|
|||||||
|
|
||||||
void
|
void
|
||||||
handle_v4(krb5_context context,
|
handle_v4(krb5_context context,
|
||||||
|
krb5_keytab keytab,
|
||||||
int len,
|
int len,
|
||||||
int fd)
|
int fd)
|
||||||
{
|
{
|
||||||
@@ -975,7 +981,7 @@ handle_v4(krb5_context context,
|
|||||||
krb5_err (context, 1, errno, "krb5_net_read");
|
krb5_err (context, 1, errno, "krb5_net_read");
|
||||||
}
|
}
|
||||||
doing_useful_work = 1;
|
doing_useful_work = 1;
|
||||||
decode_packet(context, &admin_addr, &client_addr,
|
decode_packet(context, keytab, &admin_addr, &client_addr,
|
||||||
message, &reply);
|
message, &reply);
|
||||||
krb5_data_free(&message);
|
krb5_data_free(&message);
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user