memset(tr->new_cfg->internal, 0, sizeof(TR_CFG_INTERNAL));
- if ((NULL != (jint = json_object_get(jcfg, "tr_internal"))) &&
- (NULL != (jmtd = json_object_get(jint, "max_tree_depth")))) {
- if (json_is_number(jmtd)) {
- tr->new_cfg->internal->max_tree_depth = json_integer_value(jmtd);
+ if (NULL != (jint = json_object_get(jcfg, "tr_internal"))) {
+ if (NULL != (jmtd = json_object_get(jint, "max_tree_depth"))) {
+ if (json_is_number(jmtd)) {
+ tr->new_cfg->internal->max_tree_depth = json_integer_value(jmtd);
+ } else {
+ fprintf(stderr,"tr_cfg_parse_internal: Parsing error, max_tree_depth is not a number.\n");
+ return TR_CFG_NOPARSE;
+ }
} else {
- fprintf(stderr,"tr_cfg_parse_internal: Parsing error, max_tree_depth is not a number.\n");
+ /* If not configured, use the default */
+ tr->new_cfg->internal->max_tree_depth = TR_DEFAULT_MAX_TREE_DEPTH;
+ }
+ if (NULL != (jrname = json_object_get(jint, "realm_name"))) {
+ if (json_is_string(jrname)) {
+ tr->new_cfg->internal->realm_name = json_integer_value(jrname);
+ } else {
+ fprintf(stderr,"tr_cfg_parse_internal: Parsing error, realm_name is not a string.\n");
+ return TR_CFG_NOPARSE;
+ }
+ }
+ else {
+ fprintf(stderr, "tr_cfg_parse_internal: Parsing error, realm_name is not found.\n");
return TR_CFG_NOPARSE;
}
- } else {
- /* If not configured, use the default */
- tr->new_cfg->internal->max_tree_depth = TR_DEFAULT_MAX_TREE_DEPTH;
- }
fprintf(stderr, "tr_cfg_parse_internal: Internal config parsed.\n");
return TR_CFG_SUCCESS;
+ }
+ else {
+ fprintf(stderr, "tr_cfg_parse_internal: Parsing error, tr_internal configuration section not found.\n");
+ return TR_CFG_NOPARSE;
}
static TR_FILTER *tr_cfg_parse_one_filter (TR_INSTANCE *tr, json_t *jfilt, TR_CFG_RC *rc)
const char *gServiceName = NULL;
int gsscon_passive_authenticate (int inSocket,
+ gss_buffer_desc inNameBuffer,
+ gss_name_t inServiceName,
gss_ctx_id_t *outGSSContext,
client_cb_fn clientCb,
void *clientCbData)
OM_uint32 majorStatus;
OM_uint32 minorStatus = 0;
gss_ctx_id_t gssContext = GSS_C_NO_CONTEXT;
- gss_name_t clientName = GSS_C_NO_NAME, serviceName = GSS_C_NO_NAME;
+ gss_name_t clientName = GSS_C_NO_NAME;
gss_cred_id_t acceptorCredentials = NULL;
gss_buffer_desc clientDisplayName = {0, NULL};
- gss_buffer_desc nameBuffer = {0, "trustidentity"};
-
char *inputTokenBuffer = NULL;
size_t inputTokenBufferLength = 0;
gss_buffer_desc inputToken; /* buffer received from the server */
-
- nameBuffer.length = strlen(nameBuffer.value);
if (inSocket < 0 ) { err = EINVAL; }
if (!outGSSContext) { err = EINVAL; }
if (!err)
- majorStatus = gss_import_name (&minorStatus, &nameBuffer, (gss_OID) GSS_KRB5_NT_PRINCIPAL_NAME, &serviceName);
+ majorStatus = gss_import_name (&minorStatus, &inNameBuffer, (gss_OID) GSS_KRB5_NT_PRINCIPAL_NAME, &inServiceName);
if (majorStatus != GSS_S_COMPLETE) {
gsscon_print_gss_errors ("gss_import_name(inServiceName)", majorStatus, minorStatus);
err = minorStatus ? minorStatus : majorStatus;
}
if (!err) {
- majorStatus = gss_acquire_cred ( &minorStatus, serviceName,
+ majorStatus = gss_acquire_cred ( &minorStatus, inServiceName,
GSS_C_INDEFINITE, GSS_C_NO_OID_SET,
GSS_C_ACCEPT, &acceptorCredentials,
NULL /*mechs out*/, NULL /*time out*/);
gss_release_name(&minorStatus, &clientName);
if (clientDisplayName.value != NULL)
gss_release_buffer(&minorStatus, &clientDisplayName);
- gss_release_name( &minorStatus, &serviceName);
+ gss_release_name( &minorStatus, &inServiceName);
gss_release_cred( &minorStatus, &acceptorCredentials);
return err;
{
int rc = 0;
int auth, autherr = 0;
+ gss_buffer_desc nameBuffer = {NULL, 0};
- if (rc = gsscon_passive_authenticate(conn, gssctx, tids_auth_cb, inst)) {
+
+ if (rc = gsscon_passive_authenticate(conn, nameBuffer, gssctx, tids_auth_cb, inst)) {
fprintf(stderr, "tids_auth_connection: Error from gsscon_passive_authenticate(), rc = %d.\n", rc);
return -1;
}