(krb5_passwd_result_to_string): add
change to use sequence numbers connect the udp socket so that we can figure out the local address git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10745 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -40,8 +40,6 @@ send_request (krb5_context context,
|
||||
krb5_auth_context *auth_context,
|
||||
krb5_creds *creds,
|
||||
int sock,
|
||||
struct sockaddr *sa,
|
||||
int sa_size,
|
||||
char *passwd,
|
||||
const char *host)
|
||||
{
|
||||
@@ -89,8 +87,8 @@ send_request (krb5_context context,
|
||||
*p++ = (ap_req_data.length >> 0) & 0xFF;
|
||||
|
||||
memset(&msghdr, 0, sizeof(msghdr));
|
||||
msghdr.msg_name = (void *)sa;
|
||||
msghdr.msg_namelen = sa_size;
|
||||
msghdr.msg_name = NULL;
|
||||
msghdr.msg_namelen = 0;
|
||||
msghdr.msg_iov = iov;
|
||||
msghdr.msg_iovlen = sizeof(iov)/sizeof(*iov);
|
||||
#if 0
|
||||
@@ -266,6 +264,9 @@ krb5_change_password (krb5_context context,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
krb5_auth_con_setflags (context, auth_context,
|
||||
KRB5_AUTH_CONTEXT_DO_SEQUENCE);
|
||||
|
||||
ret = krb5_krbhst_init (context, realm, KRB5_KRBHST_CHANGEPW, &handle);
|
||||
if (ret)
|
||||
goto out;
|
||||
@@ -284,6 +285,19 @@ krb5_change_password (krb5_context context,
|
||||
if (sock < 0)
|
||||
continue;
|
||||
|
||||
ret = connect(sock, a->ai_addr, a->ai_addrlen);
|
||||
if (ret < 0) {
|
||||
close (sock);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = krb5_auth_con_genaddrs (context, auth_context, sock,
|
||||
KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR);
|
||||
if (ret) {
|
||||
close (sock);
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (i = 0; !done && i < 5; ++i) {
|
||||
fd_set fdset;
|
||||
struct timeval tv;
|
||||
@@ -294,8 +308,6 @@ krb5_change_password (krb5_context context,
|
||||
&auth_context,
|
||||
creds,
|
||||
sock,
|
||||
a->ai_addr,
|
||||
a->ai_addrlen,
|
||||
newpw,
|
||||
hi->hostname);
|
||||
if (ret) {
|
||||
@@ -354,3 +366,21 @@ krb5_change_password (krb5_context context,
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
const char *
|
||||
krb5_passwd_result_to_string (krb5_context context,
|
||||
int result)
|
||||
{
|
||||
static const char *strings[] = {
|
||||
"Success",
|
||||
"Malformed",
|
||||
"Hard error",
|
||||
"Auth error",
|
||||
"Soft error"
|
||||
};
|
||||
|
||||
if (result < 0 || result > KRB5_KPASSWD_SOFTERROR)
|
||||
return "unknown result code";
|
||||
else
|
||||
return strings[result];
|
||||
}
|
||||
|
Reference in New Issue
Block a user