mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
Merge from HEAD:
net ads password
Heimdal compile fixes.
Andrew Bartlett
(This used to be commit 3aa4f923e9
)
This commit is contained in:
parent
ad0d6509a7
commit
83a580f49a
@ -213,3 +213,10 @@ typedef void **ADS_MODLIST;
|
||||
#if defined(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5)
|
||||
#define ENCTYPE_ARCFOUR_HMAC ENCTYPE_ARCFOUR_HMAC_MD5
|
||||
#endif
|
||||
|
||||
/* The older versions of heimdal that don't have this
|
||||
define don't seem to use it anyway. I'm told they
|
||||
always use a subkey */
|
||||
#ifndef AP_OPTS_USE_SUBKEY
|
||||
#define AP_OPTS_USE_SUBKEY 0
|
||||
#endif
|
||||
|
@ -178,47 +178,39 @@ static krb5_error_code build_kpasswd_request(uint16 pversion,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct kpasswd_errors {
|
||||
int result_code;
|
||||
const char *error_string;
|
||||
} kpasswd_errors[] = {
|
||||
{KRB5_KPASSWD_MALFORMED, "Malformed request error"},
|
||||
{KRB5_KPASSWD_HARDERROR, "Server error"},
|
||||
{KRB5_KPASSWD_AUTHERROR, "Authentication error"},
|
||||
{KRB5_KPASSWD_SOFTERROR, "Password change rejected"},
|
||||
{KRB5_KPASSWD_ACCESSDENIED, "Client does not have proper authorization"},
|
||||
{KRB5_KPASSWD_BAD_VERSION, "Protocol version not supported"},
|
||||
{KRB5_KPASSWD_INITIAL_FLAG_NEEDED, "Authorization ticket must have initial flag set"},
|
||||
{KRB5_KPASSWD_POLICY_REJECT, "Password rejected due to policy requirements"},
|
||||
{KRB5_KPASSWD_BAD_PRINCIPAL, "Target principal does not exist"},
|
||||
{KRB5_KPASSWD_ETYPE_NOSUPP, "Unsupported encryption type"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static krb5_error_code krb5_setpw_result_code_string(krb5_context context,
|
||||
int result_code,
|
||||
const char **code_string)
|
||||
{
|
||||
switch (result_code) {
|
||||
case KRB5_KPASSWD_MALFORMED:
|
||||
*code_string = "Malformed request error";
|
||||
break;
|
||||
case KRB5_KPASSWD_HARDERROR:
|
||||
*code_string = "Server error";
|
||||
break;
|
||||
case KRB5_KPASSWD_AUTHERROR:
|
||||
*code_string = "Authentication error";
|
||||
break;
|
||||
case KRB5_KPASSWD_SOFTERROR:
|
||||
*code_string = "Password change rejected";
|
||||
break;
|
||||
case KRB5_KPASSWD_ACCESSDENIED:
|
||||
*code_string = "Client does not have proper authorization";
|
||||
break;
|
||||
case KRB5_KPASSWD_BAD_VERSION:
|
||||
*code_string = "Protocol version not supported";
|
||||
break;
|
||||
case KRB5_KPASSWD_INITIAL_FLAG_NEEDED:
|
||||
*code_string = "Authorization ticket must have initial flag set";
|
||||
break;
|
||||
case KRB5_KPASSWD_POLICY_REJECT:
|
||||
*code_string = "Password rejected due to policy requirements";
|
||||
break;
|
||||
case KRB5_KPASSWD_BAD_PRINCIPAL:
|
||||
*code_string = "Target principal does not exist";
|
||||
break;
|
||||
case KRB5_KPASSWD_ETYPE_NOSUPP:
|
||||
*code_string = "Unsupported encryption type";
|
||||
break;
|
||||
default:
|
||||
*code_string = "Password change failed";
|
||||
break;
|
||||
}
|
||||
unsigned int idx = 0;
|
||||
|
||||
return(0);
|
||||
while (kpasswd_errors[idx].error_string != NULL) {
|
||||
if (kpasswd_errors[idx].result_code ==
|
||||
result_code) {
|
||||
*code_string = kpasswd_errors[idx].error_string;
|
||||
return 0;
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
*code_string = "Password change failed";
|
||||
return (0);
|
||||
}
|
||||
|
||||
static krb5_error_code parse_setpw_reply(krb5_context context,
|
||||
|
@ -899,6 +899,15 @@ static int net_ads_password(int argc, const char **argv)
|
||||
in realms other than default */
|
||||
if (!(ads = ads_init(realm, NULL, NULL))) return -1;
|
||||
|
||||
/* we don't actually need a full connect, but it's the easy way to
|
||||
fill in the KDC's addresss */
|
||||
ads_connect(ads);
|
||||
|
||||
if (!ads || !ads->config.realm) {
|
||||
d_printf("Didn't find the kerberos server!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
asprintf(&prompt, "Enter new password for %s:", argv[0]);
|
||||
|
||||
new_password = getpass(prompt);
|
||||
|
Loading…
Reference in New Issue
Block a user