implement GSS_KRB5_SET_DNS_CANONIZE_X
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18512 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -39,35 +39,15 @@
|
|||||||
RCSID("$Id$");
|
RCSID("$Id$");
|
||||||
|
|
||||||
static OM_uint32
|
static OM_uint32
|
||||||
set_compat_des3_mic_context_option
|
get_bool(OM_uint32 *minor_status,
|
||||||
(OM_uint32 *minor_status,
|
const gss_buffer_t value,
|
||||||
gss_ctx_id_t *context_handle,
|
int *flag)
|
||||||
const gss_buffer_t value)
|
|
||||||
{
|
{
|
||||||
gsskrb5_ctx ctx;
|
|
||||||
const char *p;
|
|
||||||
|
|
||||||
if (*context_handle == GSS_C_NO_CONTEXT) {
|
|
||||||
*minor_status = EINVAL;
|
|
||||||
return GSS_S_NO_CONTEXT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value->value == NULL || value->length != 1) {
|
if (value->value == NULL || value->length != 1) {
|
||||||
*minor_status = EINVAL;
|
*minor_status = EINVAL;
|
||||||
return GSS_S_FAILURE;
|
return GSS_S_FAILURE;
|
||||||
}
|
}
|
||||||
p = (const char *)value->value;
|
*flag = *((const char *)value->value) != 0;
|
||||||
|
|
||||||
ctx = (gsskrb5_ctx)*context_handle;
|
|
||||||
HEIMDAL_MUTEX_lock(&ctx->ctx_id_mutex);
|
|
||||||
if (*p) {
|
|
||||||
ctx->more_flags |= COMPAT_OLD_DES3;
|
|
||||||
} else {
|
|
||||||
ctx->more_flags &= ~COMPAT_OLD_DES3;
|
|
||||||
}
|
|
||||||
ctx->more_flags |= COMPAT_OLD_DES3_SELECTED;
|
|
||||||
HEIMDAL_MUTEX_unlock(&ctx->ctx_id_mutex);
|
|
||||||
|
|
||||||
return GSS_S_COMPLETE;
|
return GSS_S_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,6 +58,8 @@ _gsskrb5_set_sec_context_option
|
|||||||
const gss_OID desired_object,
|
const gss_OID desired_object,
|
||||||
const gss_buffer_t value)
|
const gss_buffer_t value)
|
||||||
{
|
{
|
||||||
|
OM_uint32 maj_stat;
|
||||||
|
|
||||||
GSSAPI_KRB5_INIT ();
|
GSSAPI_KRB5_INIT ();
|
||||||
|
|
||||||
if (value == GSS_C_NO_BUFFER) {
|
if (value == GSS_C_NO_BUFFER) {
|
||||||
@@ -86,9 +68,37 @@ _gsskrb5_set_sec_context_option
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (gss_oid_equal(desired_object, GSS_KRB5_COMPAT_DES3_MIC_X)) {
|
if (gss_oid_equal(desired_object, GSS_KRB5_COMPAT_DES3_MIC_X)) {
|
||||||
return set_compat_des3_mic_context_option(minor_status,
|
gsskrb5_ctx ctx;
|
||||||
context_handle,
|
int flag;
|
||||||
value);
|
|
||||||
|
if (*context_handle == GSS_C_NO_CONTEXT) {
|
||||||
|
*minor_status = EINVAL;
|
||||||
|
return GSS_S_NO_CONTEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
maj_stat = get_bool(minor_status, value, &flag);
|
||||||
|
if (maj_stat != GSS_S_COMPLETE)
|
||||||
|
return maj_stat;
|
||||||
|
|
||||||
|
ctx = (gsskrb5_ctx)*context_handle;
|
||||||
|
HEIMDAL_MUTEX_lock(&ctx->ctx_id_mutex);
|
||||||
|
if (flag)
|
||||||
|
ctx->more_flags |= COMPAT_OLD_DES3;
|
||||||
|
else
|
||||||
|
ctx->more_flags &= ~COMPAT_OLD_DES3;
|
||||||
|
ctx->more_flags |= COMPAT_OLD_DES3_SELECTED;
|
||||||
|
HEIMDAL_MUTEX_unlock(&ctx->ctx_id_mutex);
|
||||||
|
return GSS_S_COMPLETE;
|
||||||
|
} else if (gss_oid_equal(desired_object, GSS_KRB5_SET_DNS_CANONIZE_X)) {
|
||||||
|
int flag;
|
||||||
|
|
||||||
|
maj_stat = get_bool(minor_status, value, &flag);
|
||||||
|
if (maj_stat != GSS_S_COMPLETE)
|
||||||
|
return maj_stat;
|
||||||
|
|
||||||
|
krb5_set_dns_canonize_hostname(_gsskrb5_context, flag);
|
||||||
|
return GSS_S_COMPLETE;
|
||||||
|
|
||||||
} else if (gss_oid_equal(desired_object, GSS_KRB5_REGISTER_ACCEPTOR_IDENTITY_X)) {
|
} else if (gss_oid_equal(desired_object, GSS_KRB5_REGISTER_ACCEPTOR_IDENTITY_X)) {
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user