From c8895d60f5ca891eb62d66a125aee72ce429148d Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Fri, 21 May 1999 09:16:28 +0000 Subject: [PATCH] (handle_v5): read sendauth version correctly. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6257 ec53bebd-3082-4978-b11e-865c3cabbd6b --- kadmin/server.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/kadmin/server.c b/kadmin/server.c index e4d3f92cd..8de5ae81b 100644 --- a/kadmin/server.c +++ b/kadmin/server.c @@ -367,9 +367,9 @@ v5_loop (krb5_context context, _krb5_put_int(tmp, reply.length, 4); iov[0].iov_base = tmp; - iov[0].iov_len = 4; + iov[0].iov_len = 4; iov[1].iov_base = reply.data; - iov[1].iov_len = reply.length; + iov[1].iov_len = reply.length; n = writev(fd, iov, 2); krb5_data_free(&reply); if(n < 0) @@ -387,18 +387,22 @@ handle_v5(krb5_context context, int fd) { krb5_error_code ret; - u_char tmp[4]; + u_char version[sizeof(KRB5_SENDAUTH_VERSION)]; krb5_ticket *ticket; krb5_principal server; char *client; void *kadm_handle; - krb5_net_read(context, &fd, tmp, len); - if(len != sizeof(KRB5_SENDAUTH_VERSION) || - memcmp(tmp, KRB5_SENDAUTH_VERSION, len) != 0) - krb5_errx(context, 1, "bad sendauth version %.8s", tmp); + if (len != sizeof(KRB5_SENDAUTH_VERSION)) + krb5_errx(context, 1, "bad sendauth len %d", len); + if(krb5_net_read(context, &fd, version, len) != len) + 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, server, KRB5_RECVAUTH_IGNORE_VERSION, keytab, &ticket); @@ -406,7 +410,9 @@ handle_v5(krb5_context context, if(ret) 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, client, NULL,