a9e6df4ffc
- apply fixes from Tom Yu for MITKRB5-SA-2006-003 (CVE-2006-6144) (#218456) Related: #218456
1904 lines
48 KiB
Plaintext
1904 lines
48 KiB
Plaintext
Index: src/lib/gssapi/mechglue/g_store_cred.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_store_cred.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_store_cred.c (working copy)
|
|
***************
|
|
*** 11,16 ****
|
|
--- 11,48 ----
|
|
|
|
#include <mglueP.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_store_cred_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ const gss_cred_id_t input_cred_handle,
|
|
+ gss_cred_usage_t cred_usage,
|
|
+ const gss_OID desired_mech,
|
|
+ OM_uint32 overwrite_cred,
|
|
+ OM_uint32 default_cred,
|
|
+ gss_OID_set *elements_stored,
|
|
+ gss_cred_usage_t *cred_usage_stored)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (elements_stored != NULL)
|
|
+ *elements_stored = GSS_C_NULL_OID_SET;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (input_cred_handle == GSS_C_NO_CREDENTIAL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CRED);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 gss_store_cred(minor_status,
|
|
input_cred_handle,
|
|
cred_usage,
|
|
***************
|
|
*** 37,52 ****
|
|
gss_OID dmech;
|
|
int i;
|
|
|
|
! /* Start by checking parameters */
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE|GSS_S_NO_CRED);
|
|
! *minor_status = 0;
|
|
|
|
! if (input_cred_handle == GSS_C_NO_CREDENTIAL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
!
|
|
! if (elements_stored != NULL)
|
|
! *elements_stored = GSS_C_NULL_OID_SET;
|
|
|
|
if (cred_usage_stored != NULL)
|
|
*cred_usage_stored = GSS_C_BOTH; /* there's no GSS_C_NEITHER */
|
|
--- 69,87 ----
|
|
gss_OID dmech;
|
|
int i;
|
|
|
|
! major_status = val_store_cred_args(minor_status,
|
|
! input_cred_handle,
|
|
! cred_usage,
|
|
! desired_mech,
|
|
! overwrite_cred,
|
|
! default_cred,
|
|
! elements_stored,
|
|
! cred_usage_stored);
|
|
! if (major_status != GSS_S_COMPLETE)
|
|
! return (major_status);
|
|
|
|
! /* Initial value needed below. */
|
|
! major_status = GSS_S_FAILURE;
|
|
|
|
if (cred_usage_stored != NULL)
|
|
*cred_usage_stored = GSS_C_BOTH; /* there's no GSS_C_NEITHER */
|
|
Index: src/lib/gssapi/mechglue/g_exp_sec_context.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_exp_sec_context.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_exp_sec_context.c (working copy)
|
|
***************
|
|
*** 34,39 ****
|
|
--- 34,71 ----
|
|
#endif
|
|
#include <string.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_exp_sec_ctx_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_ctx_id_t *context_handle,
|
|
+ gss_buffer_t interprocess_token)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (interprocess_token != GSS_C_NO_BUFFER) {
|
|
+ interprocess_token->length = 0;
|
|
+ interprocess_token->value = NULL;
|
|
+ }
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == NULL || *context_handle == GSS_C_NO_CONTEXT)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
+
|
|
+ if (interprocess_token == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_export_sec_context(minor_status,
|
|
context_handle,
|
|
***************
|
|
*** 50,65 ****
|
|
gss_mechanism mech;
|
|
gss_buffer_desc token;
|
|
char *buf;
|
|
-
|
|
- if (minor_status == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
- *minor_status = 0;
|
|
-
|
|
- if (context_handle == NULL || *context_handle == GSS_C_NO_CONTEXT)
|
|
- return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
! if (interprocess_token == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
--- 82,92 ----
|
|
gss_mechanism mech;
|
|
gss_buffer_desc token;
|
|
char *buf;
|
|
|
|
! status = val_exp_sec_ctx_args(minor_status,
|
|
! context_handle, interprocess_token);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
Index: src/lib/gssapi/mechglue/g_canon_name.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_canon_name.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_canon_name.c (working copy)
|
|
***************
|
|
*** 25,30 ****
|
|
--- 25,58 ----
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_canon_name_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ const gss_name_t input_name,
|
|
+ const gss_OID mech_type,
|
|
+ gss_name_t *output_name)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_name != NULL)
|
|
+ *output_name = GSS_C_NO_NAME;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (input_name == GSS_C_NO_NAME || mech_type == GSS_C_NULL_OID)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_canonicalize_name(minor_status,
|
|
input_name,
|
|
***************
|
|
*** 38,54 ****
|
|
gss_union_name_t in_union, out_union = NULL, dest_union = NULL;
|
|
OM_uint32 major_status = GSS_S_FAILURE;
|
|
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
!
|
|
! *minor_status = 0;
|
|
|
|
! if (output_name)
|
|
! *output_name = 0;
|
|
!
|
|
! /* check the input parameters */
|
|
! if (input_name == NULL || mech_type == GSS_C_NULL_OID)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
in_union = (gss_union_name_t)input_name;
|
|
/*
|
|
--- 66,80 ----
|
|
gss_union_name_t in_union, out_union = NULL, dest_union = NULL;
|
|
OM_uint32 major_status = GSS_S_FAILURE;
|
|
|
|
! major_status = val_canon_name_args(minor_status,
|
|
! input_name,
|
|
! mech_type,
|
|
! output_name);
|
|
! if (major_status != GSS_S_COMPLETE)
|
|
! return (major_status);
|
|
|
|
! /* Initial value needed below. */
|
|
! major_status = GSS_S_FAILURE;
|
|
|
|
in_union = (gss_union_name_t)input_name;
|
|
/*
|
|
Index: src/lib/gssapi/mechglue/g_initialize.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_initialize.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_initialize.c (working copy)
|
|
***************
|
|
*** 142,158 ****
|
|
int i, j;
|
|
gss_OID curItem;
|
|
|
|
! if (!minorStatus)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! if (gssint_initialize_library())
|
|
! return GSS_S_FAILURE;
|
|
|
|
! *minorStatus = 0;
|
|
|
|
|
|
! /* check output parameter */
|
|
! if (mechSet == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
if (build_mechSet())
|
|
return GSS_S_FAILURE;
|
|
--- 142,161 ----
|
|
int i, j;
|
|
gss_OID curItem;
|
|
|
|
! /* Initialize outputs. */
|
|
|
|
! if (minorStatus != NULL)
|
|
! *minorStatus = 0;
|
|
|
|
+ if (mechSet != NULL)
|
|
+ *mechSet = GSS_C_NO_OID_SET;
|
|
|
|
! /* Validate arguments. */
|
|
! if (minorStatus == NULL || mechSet == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (gssint_initialize_library())
|
|
+ return GSS_S_FAILURE;
|
|
|
|
if (build_mechSet())
|
|
return GSS_S_FAILURE;
|
|
Index: src/lib/gssapi/mechglue/g_verify.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_verify.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_verify.c (working copy)
|
|
***************
|
|
*** 54,60 ****
|
|
if (context_handle == GSS_C_NO_CONTEXT)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
! if ((message_buffer == NULL) || GSS_EMPTY_BUFFER(token_buffer))
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
/*
|
|
--- 54,62 ----
|
|
if (context_handle == GSS_C_NO_CONTEXT)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
! if ((message_buffer == GSS_C_NO_BUFFER) ||
|
|
! GSS_EMPTY_BUFFER(token_buffer))
|
|
!
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
/*
|
|
Index: src/lib/gssapi/mechglue/g_inq_names.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_inq_names.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_inq_names.c (working copy)
|
|
***************
|
|
*** 41,50 ****
|
|
{
|
|
OM_uint32 status;
|
|
gss_mechanism mech;
|
|
!
|
|
if (minor_status == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
- *minor_status = 0;
|
|
|
|
if (name_types == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
--- 41,59 ----
|
|
{
|
|
OM_uint32 status;
|
|
gss_mechanism mech;
|
|
!
|
|
! /* Initialize outputs. */
|
|
!
|
|
! if (minor_status != NULL)
|
|
! *minor_status = 0;
|
|
!
|
|
! if (name_types != NULL)
|
|
! *name_types = GSS_C_NO_OID_SET;
|
|
!
|
|
! /* Validate arguments. */
|
|
!
|
|
if (minor_status == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
if (name_types == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
***************
|
|
*** 72,77 ****
|
|
--- 81,113 ----
|
|
|
|
return (GSS_S_BAD_MECH);
|
|
}
|
|
+
|
|
+ static OM_uint32
|
|
+ val_inq_mechs4name_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ const gss_name_t input_name,
|
|
+ gss_OID_set *mech_set)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (mech_set != NULL)
|
|
+ *mech_set = GSS_C_NO_OID_SET;
|
|
+
|
|
+ /* Validate arguments.e
|
|
+ */
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (input_name == GSS_C_NO_NAME)
|
|
+ return (GSS_S_BAD_NAME);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_inquire_mechs_for_name(minor_status, input_name, mech_set)
|
|
|
|
***************
|
|
*** 90,101 ****
|
|
gss_buffer_desc name_buffer;
|
|
int i;
|
|
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! *minor_status = 0;
|
|
!
|
|
! if (input_name == NULL)
|
|
! return (GSS_S_BAD_NAME);
|
|
|
|
status = gss_create_empty_oid_set(minor_status, mech_set);
|
|
if (status != GSS_S_COMPLETE)
|
|
--- 126,134 ----
|
|
gss_buffer_desc name_buffer;
|
|
int i;
|
|
|
|
! status = val_inq_mechs4name_args(minor_status, input_name, mech_set);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
status = gss_create_empty_oid_set(minor_status, mech_set);
|
|
if (status != GSS_S_COMPLETE)
|
|
Index: src/lib/gssapi/mechglue/g_export_name.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_export_name.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_export_name.c (working copy)
|
|
***************
|
|
*** 29,47 ****
|
|
{
|
|
gss_union_name_t union_name;
|
|
|
|
|
|
! if (minor_status)
|
|
*minor_status = 0;
|
|
|
|
! /* check out parameter */
|
|
! if (!exported_name)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
! exported_name->value = NULL;
|
|
! exported_name->length = 0;
|
|
|
|
! /* check input parameter */
|
|
! if (!input_name)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
|
|
union_name = (gss_union_name_t)input_name;
|
|
--- 29,50 ----
|
|
{
|
|
gss_union_name_t union_name;
|
|
|
|
+ /* Initialize outputs. */
|
|
|
|
! if (minor_status != NULL)
|
|
*minor_status = 0;
|
|
|
|
! if (exported_name != GSS_C_NO_BUFFER) {
|
|
! exported_name->value = NULL;
|
|
! exported_name->length = 0;
|
|
! }
|
|
!
|
|
! /* Validate arguments. */
|
|
|
|
! if (minor_status == NULL || exported_name == GSS_C_NO_BUFFER)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
! if (input_name == GSS_C_NO_NAME)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
|
|
union_name = (gss_union_name_t)input_name;
|
|
Index: src/lib/gssapi/mechglue/g_process_context.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_process_context.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_process_context.c (working copy)
|
|
***************
|
|
*** 49,54 ****
|
|
--- 49,57 ----
|
|
if (context_handle == GSS_C_NO_CONTEXT)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
+ if (token_buffer == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
+
|
|
if (GSS_EMPTY_BUFFER(token_buffer))
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
Index: src/lib/gssapi/mechglue/g_imp_sec_context.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_imp_sec_context.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_imp_sec_context.c (working copy)
|
|
***************
|
|
*** 34,39 ****
|
|
--- 34,71 ----
|
|
#endif
|
|
#include <string.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_imp_sec_ctx_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_buffer_t interprocess_token,
|
|
+ gss_ctx_id_t *context_handle)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (context_handle != NULL)
|
|
+ *context_handle = GSS_C_NO_CONTEXT;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (interprocess_token == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_DEFECTIVE_TOKEN);
|
|
+
|
|
+ if (GSS_EMPTY_BUFFER(interprocess_token))
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_DEFECTIVE_TOKEN);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_import_sec_context(minor_status,
|
|
interprocess_token,
|
|
***************
|
|
*** 50,67 ****
|
|
gss_union_ctx_id_t ctx;
|
|
gss_buffer_desc token;
|
|
gss_mechanism mech;
|
|
-
|
|
- if (minor_status == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
- *minor_status = 0;
|
|
-
|
|
- if (context_handle == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CONTEXT);
|
|
- *context_handle = GSS_C_NO_CONTEXT;
|
|
|
|
! if (GSS_EMPTY_BUFFER(interprocess_token))
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_DEFECTIVE_TOKEN);
|
|
|
|
status = GSS_S_FAILURE;
|
|
|
|
ctx = (gss_union_ctx_id_t) malloc(sizeof(gss_union_ctx_id_desc));
|
|
--- 82,94 ----
|
|
gss_union_ctx_id_t ctx;
|
|
gss_buffer_desc token;
|
|
gss_mechanism mech;
|
|
|
|
! status = val_imp_sec_ctx_args(minor_status,
|
|
! interprocess_token, context_handle);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
+ /* Initial value needed below. */
|
|
status = GSS_S_FAILURE;
|
|
|
|
ctx = (gss_union_ctx_id_t) malloc(sizeof(gss_union_ctx_id_desc));
|
|
Index: src/lib/gssapi/mechglue/g_seal.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_seal.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_seal.c (working copy)
|
|
***************
|
|
*** 28,33 ****
|
|
--- 28,72 ----
|
|
|
|
#include "mglueP.h"
|
|
|
|
+ static OM_uint32
|
|
+ val_seal_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_ctx_id_t context_handle,
|
|
+ int conf_req_flag,
|
|
+ int qop_req,
|
|
+ gss_buffer_t input_message_buffer,
|
|
+ int *conf_state,
|
|
+ gss_buffer_t output_message_buffer)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_message_buffer != GSS_C_NO_BUFFER) {
|
|
+ output_message_buffer->length = 0;
|
|
+ output_message_buffer->value = NULL;
|
|
+ }
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == GSS_C_NO_CONTEXT)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
+
|
|
+ if (input_message_buffer == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
+
|
|
+ if (output_message_buffer == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_seal (minor_status,
|
|
context_handle,
|
|
***************
|
|
*** 51,68 ****
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! *minor_status = 0;
|
|
!
|
|
! if (context_handle == GSS_C_NO_CONTEXT)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
!
|
|
! if (input_message_buffer == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
!
|
|
! if (output_message_buffer == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
--- 90,101 ----
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
|
|
! status = val_seal_args(minor_status, context_handle,
|
|
! conf_req_flag, qop_req,
|
|
! input_message_buffer, conf_state,
|
|
! output_message_buffer);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
Index: src/lib/gssapi/mechglue/g_acquire_cred.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_acquire_cred.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_acquire_cred.c (working copy)
|
|
***************
|
|
*** 71,76 ****
|
|
--- 71,113 ----
|
|
return actual_mechs;
|
|
}
|
|
|
|
+ static OM_uint32
|
|
+ val_acq_cred_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_name_t desired_name,
|
|
+ OM_uint32 time_req,
|
|
+ gss_OID_set desired_mechs,
|
|
+ int cred_usage,
|
|
+ gss_cred_id_t *output_cred_handle,
|
|
+ gss_OID_set *actual_mechs,
|
|
+ OM_uint32 *time_rec)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_cred_handle != NULL)
|
|
+ *output_cred_handle = GSS_C_NO_CREDENTIAL;
|
|
+
|
|
+ if (actual_mechs != NULL)
|
|
+ *actual_mechs = GSS_C_NULL_OID_SET;
|
|
+
|
|
+ if (time_rec != NULL)
|
|
+ *time_rec = 0;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (output_cred_handle == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_acquire_cred(minor_status,
|
|
***************
|
|
*** 101,122 ****
|
|
int i;
|
|
gss_union_cred_t creds;
|
|
|
|
! /* start by checking parameters */
|
|
! if (!minor_status)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! *minor_status = 0;
|
|
!
|
|
! if (!output_cred_handle)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CRED);
|
|
!
|
|
! *output_cred_handle = GSS_C_NO_CREDENTIAL;
|
|
!
|
|
! /* Set output parameters to NULL for now */
|
|
! if (actual_mechs)
|
|
! *actual_mechs = GSS_C_NULL_OID_SET;
|
|
|
|
! if (time_rec)
|
|
! *time_rec = 0;
|
|
|
|
/*
|
|
* if desired_mechs equals GSS_C_NULL_OID_SET, then pick an
|
|
--- 138,156 ----
|
|
int i;
|
|
gss_union_cred_t creds;
|
|
|
|
! major = val_acq_cred_args(minor_status,
|
|
! desired_name,
|
|
! time_req,
|
|
! desired_mechs,
|
|
! cred_usage,
|
|
! output_cred_handle,
|
|
! actual_mechs,
|
|
! time_rec);
|
|
! if (major != GSS_S_COMPLETE)
|
|
! return (major);
|
|
|
|
! /* Initial value needed below. */
|
|
! major = GSS_S_FAILURE;
|
|
|
|
/*
|
|
* if desired_mechs equals GSS_C_NULL_OID_SET, then pick an
|
|
***************
|
|
*** 208,213 ****
|
|
--- 242,293 ----
|
|
return (GSS_S_COMPLETE);
|
|
}
|
|
|
|
+ static OM_uint32
|
|
+ val_add_cred_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_cred_id_t input_cred_handle,
|
|
+ gss_name_t desired_name,
|
|
+ gss_OID desired_mech,
|
|
+ gss_cred_usage_t cred_usage,
|
|
+ OM_uint32 initiator_time_req,
|
|
+ OM_uint32 acceptor_time_req,
|
|
+ gss_cred_id_t *output_cred_handle,
|
|
+ gss_OID_set *actual_mechs,
|
|
+ OM_uint32 *initiator_time_rec,
|
|
+ OM_uint32 *acceptor_time_rec)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_cred_handle != NULL)
|
|
+ *output_cred_handle = GSS_C_NO_CREDENTIAL;
|
|
+
|
|
+ if (actual_mechs != NULL)
|
|
+ *actual_mechs = GSS_C_NO_OID_SET;
|
|
+
|
|
+ if (acceptor_time_rec != NULL)
|
|
+ *acceptor_time_rec = 0;
|
|
+
|
|
+ if (initiator_time_rec != NULL)
|
|
+ *initiator_time_rec = 0;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (input_cred_handle == GSS_C_NO_CREDENTIAL &&
|
|
+ output_cred_handle == NULL)
|
|
+
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CRED);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
/* V2 KRB5_CALLCONV */
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_add_cred(minor_status, input_cred_handle,
|
|
***************
|
|
*** 238,263 ****
|
|
gss_OID new_mechs_array = NULL;
|
|
gss_cred_id_t * new_cred_array = NULL;
|
|
|
|
! /* check input parameters */
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! *minor_status = 0;
|
|
!
|
|
! if (input_cred_handle == GSS_C_NO_CREDENTIAL &&
|
|
! output_cred_handle == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CRED);
|
|
!
|
|
! if (output_cred_handle)
|
|
! *output_cred_handle = GSS_C_NO_CREDENTIAL;
|
|
!
|
|
! if (actual_mechs)
|
|
! *actual_mechs = NULL;
|
|
!
|
|
! if (acceptor_time_rec)
|
|
! *acceptor_time_rec = 0;
|
|
!
|
|
! if (initiator_time_rec)
|
|
! *initiator_time_rec = 0;
|
|
|
|
mech = gssint_get_mechanism(desired_mech);
|
|
if (!mech)
|
|
--- 318,336 ----
|
|
gss_OID new_mechs_array = NULL;
|
|
gss_cred_id_t * new_cred_array = NULL;
|
|
|
|
! status = val_add_cred_args(minor_status,
|
|
! input_cred_handle,
|
|
! desired_name,
|
|
! desired_mech,
|
|
! cred_usage,
|
|
! initiator_time_req,
|
|
! acceptor_time_req,
|
|
! output_cred_handle,
|
|
! actual_mechs,
|
|
! initiator_time_rec,
|
|
! acceptor_time_rec);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
mech = gssint_get_mechanism(desired_mech);
|
|
if (!mech)
|
|
Index: src/lib/gssapi/mechglue/g_dsp_name.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_dsp_name.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_dsp_name.c (working copy)
|
|
***************
|
|
*** 34,39 ****
|
|
--- 34,75 ----
|
|
#endif
|
|
#include <string.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_dsp_name_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_name_t input_name,
|
|
+ gss_buffer_t output_name_buffer,
|
|
+ gss_OID *output_name_type)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_name_buffer != GSS_C_NO_BUFFER) {
|
|
+ output_name_buffer->length = 0;
|
|
+ output_name_buffer->value = NULL;
|
|
+ }
|
|
+
|
|
+ if (output_name_type != NULL)
|
|
+ *output_name_type = GSS_C_NO_OID;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (output_name_buffer == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (input_name == GSS_C_NO_NAME)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_display_name (minor_status,
|
|
input_name,
|
|
***************
|
|
*** 48,66 ****
|
|
{
|
|
OM_uint32 major_status;
|
|
gss_union_name_t union_name;
|
|
-
|
|
- if (minor_status == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
- *minor_status = 0;
|
|
-
|
|
- if (input_name == 0)
|
|
- return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
-
|
|
- if (output_name_buffer == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
! if (output_name_type)
|
|
! *output_name_type = NULL;
|
|
|
|
union_name = (gss_union_name_t) input_name;
|
|
|
|
--- 84,94 ----
|
|
{
|
|
OM_uint32 major_status;
|
|
gss_union_name_t union_name;
|
|
|
|
! major_status = val_dsp_name_args(minor_status, input_name,
|
|
! output_name_buffer, output_name_type);
|
|
! if (major_status != GSS_S_COMPLETE)
|
|
! return (major_status);
|
|
|
|
union_name = (gss_union_name_t) input_name;
|
|
|
|
Index: src/lib/gssapi/mechglue/g_unseal.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_unseal.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_unseal.c (working copy)
|
|
***************
|
|
*** 49,69 ****
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
|
|
if (minor_status == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
- *minor_status = 0;
|
|
|
|
if (context_handle == GSS_C_NO_CONTEXT)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
! if (GSS_EMPTY_BUFFER(input_message_buffer))
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
! if (output_message_buffer == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
-
|
|
- output_message_buffer->length = 0;
|
|
- output_message_buffer->value = NULL;
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
--- 49,75 ----
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_message_buffer != GSS_C_NO_BUFFER) {
|
|
+ output_message_buffer->length = 0;
|
|
+ output_message_buffer->value = NULL;
|
|
+ }
|
|
+
|
|
if (minor_status == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
if (context_handle == GSS_C_NO_CONTEXT)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
! if (input_message_buffer == GSS_C_NO_BUFFER ||
|
|
! GSS_EMPTY_BUFFER(input_message_buffer))
|
|
!
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
! if (output_message_buffer == GSS_C_NO_BUFFER)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
Index: src/lib/gssapi/mechglue/g_dup_name.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_dup_name.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_dup_name.c (working copy)
|
|
***************
|
|
*** 19,24 ****
|
|
--- 19,55 ----
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_dup_name_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ const gss_name_t src_name,
|
|
+ gss_name_t *dest_name)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (dest_name != NULL)
|
|
+ *dest_name = GSS_C_NO_NAME;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ /* if output_name is NULL, simply return */
|
|
+ if (dest_name == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (src_name == GSS_C_NO_NAME)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_duplicate_name(minor_status,
|
|
src_name,
|
|
***************
|
|
*** 30,49 ****
|
|
gss_union_name_t src_union, dest_union;
|
|
OM_uint32 major_status = GSS_S_FAILURE;
|
|
|
|
!
|
|
! if (!minor_status)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
!
|
|
! *minor_status = 0;
|
|
!
|
|
! /* if output_name is NULL, simply return */
|
|
! if (dest_name == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_BAD_NAME);
|
|
!
|
|
! *dest_name = 0;
|
|
!
|
|
! if (src_name == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
src_union = (gss_union_name_t)src_name;
|
|
|
|
--- 61,69 ----
|
|
gss_union_name_t src_union, dest_union;
|
|
OM_uint32 major_status = GSS_S_FAILURE;
|
|
|
|
! major_status = val_dup_name_args(minor_status, src_name, dest_name);
|
|
! if (major_status != GSS_S_COMPLETE)
|
|
! return (major_status);
|
|
|
|
src_union = (gss_union_name_t)src_name;
|
|
|
|
Index: src/lib/gssapi/mechglue/g_dsp_status.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_dsp_status.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_dsp_status.c (working copy)
|
|
***************
|
|
*** 54,70 ****
|
|
gss_OID mech_type = (gss_OID) req_mech_type;
|
|
gss_mechanism mech;
|
|
|
|
! /* check the input parameters */
|
|
! if (!minor_status)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
! *minor_status = 0;
|
|
|
|
! if (!message_context || status_string == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
! status_string->length = 0;
|
|
! status_string->value = NULL;
|
|
|
|
/* we handle major status codes, and the mechs do the minor */
|
|
if (status_type == GSS_C_GSS_CODE)
|
|
--- 54,72 ----
|
|
gss_OID mech_type = (gss_OID) req_mech_type;
|
|
gss_mechanism mech;
|
|
|
|
! if (minor_status != NULL)
|
|
! *minor_status = 0;
|
|
|
|
! if (status_string != GSS_C_NO_BUFFER) {
|
|
! status_string->length = 0;
|
|
! status_string->value = NULL;
|
|
! }
|
|
|
|
! if (minor_status == NULL ||
|
|
! message_context == NULL ||
|
|
! status_string == GSS_C_NO_BUFFER)
|
|
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
/* we handle major status codes, and the mechs do the minor */
|
|
if (status_type == GSS_C_GSS_CODE)
|
|
Index: src/lib/gssapi/mechglue/g_inq_context.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_inq_context.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_inq_context.c (working copy)
|
|
***************
|
|
*** 31,36 ****
|
|
--- 31,75 ----
|
|
#include <stdlib.h>
|
|
#endif
|
|
|
|
+ static OM_uint32
|
|
+ val_inq_ctx_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_ctx_id_t context_handle,
|
|
+ gss_name_t *src_name,
|
|
+ gss_name_t *targ_name,
|
|
+ OM_uint32 *lifetime_rec,
|
|
+ gss_OID *mech_type,
|
|
+ OM_uint32 *ctx_flags,
|
|
+ int *locally_initiated,
|
|
+ int *open)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (src_name != NULL)
|
|
+ *src_name = GSS_C_NO_NAME;
|
|
+
|
|
+ if (targ_name != NULL)
|
|
+ *targ_name = GSS_C_NO_NAME;
|
|
+
|
|
+ if (mech_type != NULL)
|
|
+ *mech_type = GSS_C_NO_OID;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == GSS_C_NO_CONTEXT)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
/* Last argument new for V2 */
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_inquire_context(
|
|
***************
|
|
*** 60,85 ****
|
|
gss_mechanism mech;
|
|
OM_uint32 status, temp_minor;
|
|
gss_name_t localTargName = NULL, localSourceName = NULL;
|
|
-
|
|
- if (!minor_status)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
! *minor_status = 0;
|
|
!
|
|
! /* if the context_handle is Null, return NO_CONTEXT error */
|
|
! if (context_handle == GSS_C_NO_CONTEXT)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
- /* set all output value to NULL */
|
|
- if (src_name)
|
|
- *src_name = NULL;
|
|
-
|
|
- if (targ_name)
|
|
- *targ_name = NULL;
|
|
-
|
|
- if (mech_type)
|
|
- *mech_type = NULL;
|
|
-
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
* call it.
|
|
--- 99,114 ----
|
|
gss_mechanism mech;
|
|
OM_uint32 status, temp_minor;
|
|
gss_name_t localTargName = NULL, localSourceName = NULL;
|
|
|
|
! status = val_inq_ctx_args(minor_status,
|
|
! context_handle,
|
|
! src_name, targ_name,
|
|
! lifetime_rec,
|
|
! mech_type, ctx_flags,
|
|
! locally_initiated, open);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
* call it.
|
|
Index: src/lib/gssapi/mechglue/g_accept_sec_context.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_accept_sec_context.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_accept_sec_context.c (working copy)
|
|
***************
|
|
*** 33,38 ****
|
|
--- 33,90 ----
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_acc_sec_ctx_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_ctx_id_t *context_handle,
|
|
+ gss_cred_id_t verifier_cred_handle,
|
|
+ gss_buffer_t input_token_buffer,
|
|
+ gss_channel_bindings_t input_chan_bindings,
|
|
+ gss_name_t *src_name,
|
|
+ gss_OID *mech_type,
|
|
+ gss_buffer_t output_token,
|
|
+ OM_uint32 *ret_flags,
|
|
+ OM_uint32 *time_rec,
|
|
+ gss_cred_id_t *d_cred)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (src_name != NULL)
|
|
+ *src_name = GSS_C_NO_NAME;
|
|
+
|
|
+ if (mech_type != NULL)
|
|
+ *mech_type = GSS_C_NO_OID;
|
|
+
|
|
+ if (output_token != GSS_C_NO_BUFFER) {
|
|
+ output_token->length = 0;
|
|
+ output_token->value = NULL;
|
|
+ }
|
|
+
|
|
+ if (d_cred != NULL)
|
|
+ *d_cred = GSS_C_NO_CREDENTIAL;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (input_token_buffer == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
+
|
|
+ if (output_token == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_accept_sec_context (minor_status,
|
|
context_handle,
|
|
***************
|
|
*** 69,94 ****
|
|
gss_OID_desc token_mech_type_desc;
|
|
gss_OID token_mech_type = &token_mech_type_desc;
|
|
gss_mechanism mech;
|
|
-
|
|
- /* check parameters first */
|
|
- if (minor_status == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
- *minor_status = 0;
|
|
-
|
|
- if (context_handle == NULL || output_token == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
-
|
|
- /* clear optional fields */
|
|
- output_token->value = NULL;
|
|
- output_token->length = 0;
|
|
- if (src_name)
|
|
- *src_name = NULL;
|
|
|
|
! if (mech_type)
|
|
! *mech_type = NULL;
|
|
|
|
- if (d_cred)
|
|
- *d_cred = NULL;
|
|
/*
|
|
* if context_handle is GSS_C_NO_CONTEXT, allocate a union context
|
|
* descriptor to hold the mech type information as well as the
|
|
--- 121,141 ----
|
|
gss_OID_desc token_mech_type_desc;
|
|
gss_OID token_mech_type = &token_mech_type_desc;
|
|
gss_mechanism mech;
|
|
|
|
! status = val_acc_sec_ctx_args(minor_status,
|
|
! context_handle,
|
|
! verifier_cred_handle,
|
|
! input_token_buffer,
|
|
! input_chan_bindings,
|
|
! src_name,
|
|
! mech_type,
|
|
! output_token,
|
|
! ret_flags,
|
|
! time_rec,
|
|
! d_cred);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
/*
|
|
* if context_handle is GSS_C_NO_CONTEXT, allocate a union context
|
|
* descriptor to hold the mech type information as well as the
|
|
Index: src/lib/gssapi/mechglue/g_sign.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_sign.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_sign.c (working copy)
|
|
***************
|
|
*** 28,33 ****
|
|
--- 28,70 ----
|
|
|
|
#include "mglueP.h"
|
|
|
|
+ static OM_uint32
|
|
+ val_sign_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_ctx_id_t context_handle,
|
|
+ int qop_req,
|
|
+ gss_buffer_t message_buffer,
|
|
+ gss_buffer_t msg_token)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (msg_token != GSS_C_NO_BUFFER) {
|
|
+ msg_token->value = NULL;
|
|
+ msg_token->length = 0;
|
|
+ }
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == GSS_C_NO_CONTEXT)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
+
|
|
+ if (message_buffer == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
+
|
|
+ if (msg_token == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_sign (minor_status,
|
|
context_handle,
|
|
***************
|
|
*** 46,66 ****
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! *minor_status = 0;
|
|
!
|
|
! if (context_handle == GSS_C_NO_CONTEXT)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
!
|
|
! if (message_buffer == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
!
|
|
! if (msg_token == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
- msg_token->value = NULL;
|
|
- msg_token->length = 0;
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
* call it.
|
|
--- 83,93 ----
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
|
|
! status = val_sign_args(minor_status, context_handle,
|
|
! qop_req, message_buffer, msg_token);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
* call it.
|
|
Index: src/lib/gssapi/mechglue/g_delete_sec_context.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_delete_sec_context.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_delete_sec_context.c (working copy)
|
|
***************
|
|
*** 32,37 ****
|
|
--- 32,66 ----
|
|
#include <stdlib.h>
|
|
#endif
|
|
|
|
+ static OM_uint32
|
|
+ val_del_sec_ctx_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_ctx_id_t *context_handle,
|
|
+ gss_buffer_t output_token)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_token != GSS_C_NO_BUFFER) {
|
|
+ output_token->length = 0;
|
|
+ output_token->value = NULL;
|
|
+ }
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == NULL || *context_handle == GSS_C_NO_CONTEXT)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CONTEXT);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_delete_sec_context (minor_status,
|
|
context_handle,
|
|
***************
|
|
*** 45,62 ****
|
|
OM_uint32 status;
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
-
|
|
- if (minor_status == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
-
|
|
- if (output_token != GSS_C_NO_BUFFER) {
|
|
- output_token->length = 0;
|
|
- output_token->value = NULL;
|
|
- }
|
|
|
|
! /* if the context_handle is Null, return NO_CONTEXT error */
|
|
! if(context_handle == NULL || *context_handle == GSS_C_NO_CONTEXT)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_NO_CONTEXT);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
--- 74,83 ----
|
|
OM_uint32 status;
|
|
gss_union_ctx_id_t ctx;
|
|
gss_mechanism mech;
|
|
|
|
! status = val_del_sec_ctx_args(minor_status, context_handle, output_token);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
/*
|
|
* select the approprate underlying mechanism routine and
|
|
Index: src/lib/gssapi/mechglue/g_init_sec_context.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_init_sec_context.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_init_sec_context.c (working copy)
|
|
***************
|
|
*** 33,38 ****
|
|
--- 33,86 ----
|
|
#endif
|
|
#include <string.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_init_sec_ctx_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_cred_id_t claimant_cred_handle,
|
|
+ gss_ctx_id_t *context_handle,
|
|
+ gss_name_t target_name,
|
|
+ gss_OID req_mech_type,
|
|
+ OM_uint32 req_flags,
|
|
+ OM_uint32 time_req,
|
|
+ gss_channel_bindings_t input_chan_bindings,
|
|
+ gss_buffer_t input_token,
|
|
+ gss_OID *actual_mech_type,
|
|
+ gss_buffer_t output_token,
|
|
+ OM_uint32 *ret_flags,
|
|
+ OM_uint32 *time_rec)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (actual_mech_type != NULL)
|
|
+ *actual_mech_type = GSS_C_NO_OID;
|
|
+
|
|
+ if (output_token != GSS_C_NO_BUFFER) {
|
|
+ output_token->length = 0;
|
|
+ output_token->value = NULL;
|
|
+ }
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (context_handle == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CONTEXT);
|
|
+
|
|
+ if (target_name == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
+
|
|
+ if (output_token == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_init_sec_context (minor_status,
|
|
claimant_cred_handle,
|
|
***************
|
|
*** 72,101 ****
|
|
gss_mechanism mech;
|
|
gss_cred_id_t input_cred_handle;
|
|
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! *minor_status = 0;
|
|
! output_token->length = 0;
|
|
! output_token->value = NULL;
|
|
!
|
|
! /* clear output values */
|
|
! if (actual_mech_type)
|
|
! *actual_mech_type = NULL;
|
|
!
|
|
! if (context_handle == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE | GSS_S_NO_CONTEXT);
|
|
!
|
|
! union_name = (gss_union_name_t) target_name;
|
|
!
|
|
! if (target_name == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
!
|
|
! if (output_token == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
!
|
|
! output_token->value = NULL;
|
|
! output_token->length = 0;
|
|
!
|
|
|
|
if (req_mech_type)
|
|
mech_type = (gss_OID)req_mech_type;
|
|
--- 120,140 ----
|
|
gss_mechanism mech;
|
|
gss_cred_id_t input_cred_handle;
|
|
|
|
! status = val_init_sec_ctx_args(minor_status,
|
|
! claimant_cred_handle,
|
|
! context_handle,
|
|
! target_name,
|
|
! req_mech_type,
|
|
! req_flags,
|
|
! time_req,
|
|
! input_chan_bindings,
|
|
! input_token,
|
|
! actual_mech_type,
|
|
! output_token,
|
|
! ret_flags,
|
|
! time_rec);
|
|
! if (status != GSS_S_COMPLETE)
|
|
! return (status);
|
|
|
|
if (req_mech_type)
|
|
mech_type = (gss_OID)req_mech_type;
|
|
Index: src/lib/gssapi/mechglue/g_inq_cred.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_inq_cred.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_inq_cred.c (working copy)
|
|
***************
|
|
*** 55,71 ****
|
|
gss_mechanism mech;
|
|
gss_name_t internal_name;
|
|
int i;
|
|
-
|
|
- /* check parms and set to defaults */
|
|
- if (minor_status == NULL)
|
|
- return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
- *minor_status = 0;
|
|
|
|
! if (name)
|
|
! *name = NULL;
|
|
|
|
! if (mechanisms)
|
|
! *mechanisms = NULL;
|
|
|
|
if (cred_handle == GSS_C_NO_CREDENTIAL) {
|
|
/*
|
|
--- 55,75 ----
|
|
gss_mechanism mech;
|
|
gss_name_t internal_name;
|
|
int i;
|
|
|
|
! /* Initialize outputs. */
|
|
!
|
|
! if (minor_status != NULL)
|
|
! *minor_status = 0;
|
|
!
|
|
! if (name != NULL)
|
|
! *name = GSS_C_NO_NAME;
|
|
!
|
|
! if (mechanisms != NULL)
|
|
! *mechanisms = GSS_C_NO_OID_SET;
|
|
|
|
! /* Validate arguments. */
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
if (cred_handle == GSS_C_NO_CREDENTIAL) {
|
|
/*
|
|
***************
|
|
*** 216,221 ****
|
|
--- 220,233 ----
|
|
OM_uint32 status, temp_minor_status;
|
|
gss_name_t internal_name;
|
|
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (name != NULL)
|
|
+ *name = GSS_C_NO_NAME;
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
mech = gssint_get_mechanism (mech_type);
|
|
if (!mech)
|
|
Index: src/lib/gssapi/mechglue/g_imp_name.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_imp_name.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_imp_name.c (working copy)
|
|
***************
|
|
*** 38,43 ****
|
|
--- 38,77 ----
|
|
/* local function to import GSS_C_EXPORT_NAME names */
|
|
static OM_uint32 importExportName(OM_uint32 *, gss_union_name_t);
|
|
|
|
+ static OM_uint32
|
|
+ val_imp_name_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_buffer_t input_name_buffer,
|
|
+ gss_OID input_name_type,
|
|
+ gss_name_t *output_name)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ if (output_name != NULL)
|
|
+ *output_name = GSS_C_NO_NAME;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (minor_status == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (output_name == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ if (input_name_buffer == GSS_C_NO_BUFFER)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
+
|
|
+ if (GSS_EMPTY_BUFFER(input_name_buffer))
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_import_name(minor_status,
|
|
input_name_buffer,
|
|
***************
|
|
*** 53,74 ****
|
|
gss_union_name_t union_name;
|
|
OM_uint32 tmp, major_status = GSS_S_FAILURE;
|
|
|
|
! /* check output parameters */
|
|
! if (!minor_status)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
!
|
|
! *minor_status = 0;
|
|
!
|
|
! if (output_name == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
!
|
|
! *output_name = 0;
|
|
!
|
|
! if (input_name_buffer == GSS_C_NO_BUFFER)
|
|
! return (GSS_S_BAD_NAME);
|
|
!
|
|
! if (GSS_EMPTY_BUFFER(input_name_buffer))
|
|
! return (GSS_S_BAD_NAME);
|
|
|
|
/*
|
|
* First create the union name struct that will hold the external
|
|
--- 87,97 ----
|
|
gss_union_name_t union_name;
|
|
OM_uint32 tmp, major_status = GSS_S_FAILURE;
|
|
|
|
! major_status = val_imp_name_args(minor_status,
|
|
! input_name_buffer, input_name_type,
|
|
! output_name);
|
|
! if (major_status != GSS_S_COMPLETE)
|
|
! return (major_status);
|
|
|
|
/*
|
|
* First create the union name struct that will hold the external
|
|
Index: src/lib/gssapi/mechglue/g_compare_name.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/g_compare_name.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/g_compare_name.c (working copy)
|
|
***************
|
|
*** 33,38 ****
|
|
--- 33,63 ----
|
|
#endif
|
|
#include <string.h>
|
|
|
|
+ static OM_uint32
|
|
+ val_comp_name_args(
|
|
+ OM_uint32 *minor_status,
|
|
+ gss_name_t name1,
|
|
+ gss_name_t name2,
|
|
+ int *name_equal)
|
|
+ {
|
|
+
|
|
+ /* Initialize outputs. */
|
|
+
|
|
+ if (minor_status != NULL)
|
|
+ *minor_status = 0;
|
|
+
|
|
+ /* Validate arguments. */
|
|
+
|
|
+ if (name1 == GSS_C_NO_NAME || name2 == GSS_C_NO_NAME)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
+
|
|
+ if (name_equal == NULL)
|
|
+ return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
+
|
|
+ return (GSS_S_COMPLETE);
|
|
+ }
|
|
+
|
|
+
|
|
OM_uint32 KRB5_CALLCONV
|
|
gss_compare_name (minor_status,
|
|
name1,
|
|
***************
|
|
*** 50,64 ****
|
|
gss_mechanism mech;
|
|
gss_name_t internal_name;
|
|
|
|
! if (minor_status == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
! *minor_status = 0;
|
|
!
|
|
! if (name1 == 0 || name2 == 0)
|
|
! return (GSS_S_CALL_INACCESSIBLE_READ | GSS_S_BAD_NAME);
|
|
!
|
|
! if (name_equal == NULL)
|
|
! return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
union_name1 = (gss_union_name_t) name1;
|
|
union_name2 = (gss_union_name_t) name2;
|
|
--- 75,84 ----
|
|
gss_mechanism mech;
|
|
gss_name_t internal_name;
|
|
|
|
! major_status = val_comp_name_args(minor_status,
|
|
! name1, name2, name_equal);
|
|
! if (major_status != GSS_S_COMPLETE)
|
|
! return (major_status);
|
|
|
|
union_name1 = (gss_union_name_t) name1;
|
|
union_name2 = (gss_union_name_t) name2;
|
|
Index: src/lib/gssapi/mechglue/oid_ops.c
|
|
===================================================================
|
|
*** src/lib/gssapi/mechglue/oid_ops.c (revision 18858)
|
|
--- src/lib/gssapi/mechglue/oid_ops.c (working copy)
|
|
***************
|
|
*** 49,55 ****
|
|
if (minor_status)
|
|
*minor_status = 0;
|
|
|
|
! if (*oid == GSS_C_NO_OID)
|
|
return(GSS_S_COMPLETE);
|
|
|
|
/*
|
|
--- 49,55 ----
|
|
if (minor_status)
|
|
*minor_status = 0;
|
|
|
|
! if (oid == NULL || *oid == GSS_C_NO_OID)
|
|
return(GSS_S_COMPLETE);
|
|
|
|
/*
|
|
***************
|
|
*** 227,238 ****
|
|
unsigned char *cp;
|
|
char *bp;
|
|
|
|
! *minor_status = 0;
|
|
|
|
if (oid == NULL || oid->length == 0 || oid->elements == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
! if (oid_str == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
/* Decoded according to krb5/gssapi_krb5.c */
|
|
--- 227,244 ----
|
|
unsigned char *cp;
|
|
char *bp;
|
|
|
|
! if (minor_status != NULL)
|
|
! *minor_status = 0;
|
|
!
|
|
! if (oid_str != GSS_C_NO_BUFFER) {
|
|
! oid_str->length = 0;
|
|
! oid_str->value = NULL;
|
|
! }
|
|
|
|
if (oid == NULL || oid->length == 0 || oid->elements == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
! if (oid_str == GSS_C_NO_BUFFER)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
/* Decoded according to krb5/gssapi_krb5.c */
|
|
***************
|
|
*** 307,313 ****
|
|
int index;
|
|
unsigned char *op;
|
|
|
|
! *minor_status = 0;
|
|
|
|
if (GSS_EMPTY_BUFFER(oid_str))
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
--- 313,323 ----
|
|
int index;
|
|
unsigned char *op;
|
|
|
|
! if (minor_status != NULL)
|
|
! *minor_status = 0;
|
|
!
|
|
! if (oid != NULL)
|
|
! *oid = GSS_C_NO_OID;
|
|
|
|
if (GSS_EMPTY_BUFFER(oid_str))
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
***************
|
|
*** 458,473 ****
|
|
OM_uint32 major = GSS_S_COMPLETE;
|
|
OM_uint32 index;
|
|
|
|
! if (minor_status)
|
|
*minor_status = 0;
|
|
|
|
! if (oidset == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
if (new_oidset == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
-
|
|
- *new_oidset = NULL;
|
|
|
|
if ((copy = (gss_OID_set_desc *) calloc(1, sizeof (*copy))) == NULL) {
|
|
major = GSS_S_FAILURE;
|
|
--- 468,484 ----
|
|
OM_uint32 major = GSS_S_COMPLETE;
|
|
OM_uint32 index;
|
|
|
|
! if (minor_status != NULL)
|
|
*minor_status = 0;
|
|
|
|
! if (new_oidset != NULL)
|
|
! *new_oidset = GSS_C_NO_OID_SET;
|
|
!
|
|
! if (oidset == GSS_C_NO_OID_SET)
|
|
return (GSS_S_CALL_INACCESSIBLE_READ);
|
|
|
|
if (new_oidset == NULL)
|
|
return (GSS_S_CALL_INACCESSIBLE_WRITE);
|
|
|
|
if ((copy = (gss_OID_set_desc *) calloc(1, sizeof (*copy))) == NULL) {
|
|
major = GSS_S_FAILURE;
|
|
Index: src/kadmin/server/ovsec_kadmd.c
|
|
===================================================================
|
|
*** src/kadmin/server/ovsec_kadmd.c (revision 18858)
|
|
--- src/kadmin/server/ovsec_kadmd.c (working copy)
|
|
***************
|
|
*** 993,998 ****
|
|
--- 993,1003 ----
|
|
int i;
|
|
const char *procname;
|
|
|
|
+ client.length = 0;
|
|
+ client.value = NULL;
|
|
+ server.length = 0;
|
|
+ server.value = NULL;
|
|
+
|
|
(void) gss_display_name(&minor, client_name, &client, &gss_type);
|
|
(void) gss_display_name(&minor, server_name, &server, &gss_type);
|
|
if (client.value == NULL)
|