Print this page
NEX-16031 Samba's smbclient fails to authenticate using Kerberos with NT_STATUS_WRONG_PASSWORD
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
*** 1,7 ****
--- 1,8 ----
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
*/
/*
* Copyright 2000, 2004 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
*** 136,174 ****
* message in the clear -- the "authenticator" whose "checksum" ends up
* containing the KRB_CRED message does get encrypted.)
*/
/* Solaris Kerberos */
if ((retval = krb5_rd_cred(context, auth_context, inbuf, &creds, NULL))) {
! krb5_enctype enctype = ENCTYPE_NULL;
! /*
! * If the client is using non-DES enctypes it really ought to
! * send encrypted KRB-CREDs...
! */
! if (auth_context->keyblock != NULL)
! enctype = auth_context->keyblock->enctype;
! switch (enctype) {
! case ENCTYPE_DES_CBC_MD5:
! case ENCTYPE_DES_CBC_CRC:
! case ENCTYPE_DES3_CBC_SHA1:
! break;
! default:
! KRB5_LOG(KRB5_ERR, "rd_and_store_for_creds() error "
! "krb5_rd_cred() retval = %d\n", retval);
! goto cleanup;
! /* NOTREACHED */
! break;
! }
/* Try to krb5_rd_cred() likely unencrypted KRB-CRED */
if ((retval = krb5_auth_con_init(context, &new_auth_ctx)))
goto cleanup;
krb5_auth_con_setflags(context, new_auth_ctx, 0);
if ((retval = krb5_rd_cred(context, new_auth_ctx, inbuf,
&creds, NULL))) {
/* Solaris Kerberos */
! KRB5_LOG(KRB5_ERR, "rd_and_store_for_creds() error "
! "krb5_rd_cred() retval = %d\n", retval);
goto cleanup;
}
}
if ((retval = krb5_cc_new_unique(context, "MEMORY", NULL, &ccache))) {
--- 137,158 ----
* message in the clear -- the "authenticator" whose "checksum" ends up
* containing the KRB_CRED message does get encrypted.)
*/
/* Solaris Kerberos */
if ((retval = krb5_rd_cred(context, auth_context, inbuf, &creds, NULL))) {
! krb5_error_code retval2 = retval;
/* Try to krb5_rd_cred() likely unencrypted KRB-CRED */
if ((retval = krb5_auth_con_init(context, &new_auth_ctx)))
goto cleanup;
krb5_auth_con_setflags(context, new_auth_ctx, 0);
if ((retval = krb5_rd_cred(context, new_auth_ctx, inbuf,
&creds, NULL))) {
/* Solaris Kerberos */
! KRB5_LOG1(KRB5_ERR, "rd_and_store_for_creds() error "
! "krb5_rd_cred() retval = %d original = %d\n",
! retval, retval2);
goto cleanup;
}
}
if ((retval = krb5_cc_new_unique(context, "MEMORY", NULL, &ccache))) {