(handle_v5): read sendauth version correctly.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6257 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-05-21 09:16:28 +00:00
parent dbaadb6d3c
commit c8895d60f5

View File

@@ -367,9 +367,9 @@ v5_loop (krb5_context context,
_krb5_put_int(tmp, reply.length, 4); _krb5_put_int(tmp, reply.length, 4);
iov[0].iov_base = tmp; iov[0].iov_base = tmp;
iov[0].iov_len = 4; iov[0].iov_len = 4;
iov[1].iov_base = reply.data; iov[1].iov_base = reply.data;
iov[1].iov_len = reply.length; iov[1].iov_len = reply.length;
n = writev(fd, iov, 2); n = writev(fd, iov, 2);
krb5_data_free(&reply); krb5_data_free(&reply);
if(n < 0) if(n < 0)
@@ -387,18 +387,22 @@ handle_v5(krb5_context context,
int fd) int fd)
{ {
krb5_error_code ret; krb5_error_code ret;
u_char tmp[4]; u_char version[sizeof(KRB5_SENDAUTH_VERSION)];
krb5_ticket *ticket; krb5_ticket *ticket;
krb5_principal server; krb5_principal server;
char *client; char *client;
void *kadm_handle; void *kadm_handle;
krb5_net_read(context, &fd, tmp, len); if (len != sizeof(KRB5_SENDAUTH_VERSION))
if(len != sizeof(KRB5_SENDAUTH_VERSION) || krb5_errx(context, 1, "bad sendauth len %d", len);
memcmp(tmp, KRB5_SENDAUTH_VERSION, len) != 0) if(krb5_net_read(context, &fd, version, len) != len)
krb5_errx(context, 1, "bad sendauth version %.8s", tmp); krb5_err (context, 1, errno, "reading sendauth version");
if(memcmp(version, KRB5_SENDAUTH_VERSION, len) != 0)
krb5_errx(context, 1, "bad sendauth version %.8s", version);
krb5_parse_name(context, KADM5_ADMIN_SERVICE, &server); ret = krb5_parse_name(context, KADM5_ADMIN_SERVICE, &server);
if (ret)
krb5_err (context, 1, ret, "krb5_parse_name %s", KADM5_ADMIN_SERVICE);
ret = krb5_recvauth(context, &ac, &fd, KADMIN_APPL_VERSION, ret = krb5_recvauth(context, &ac, &fd, KADMIN_APPL_VERSION,
server, KRB5_RECVAUTH_IGNORE_VERSION, server, KRB5_RECVAUTH_IGNORE_VERSION,
keytab, &ticket); keytab, &ticket);
@@ -406,7 +410,9 @@ handle_v5(krb5_context context,
if(ret) if(ret)
krb5_err(context, 1, ret, "krb5_recvauth"); krb5_err(context, 1, ret, "krb5_recvauth");
krb5_unparse_name(context, ticket->client, &client); ret = krb5_unparse_name(context, ticket->client, &client);
if (ret)
krb5_err (context, 1, ret, "krb5_unparse_name");
ret = kadm5_init_with_password_ctx(context, ret = kadm5_init_with_password_ctx(context,
client, client,
NULL, NULL,