From: Ken Raeburn Date: Mon, 17 Jul 2006 20:57:49 +0000 (+0000) Subject: merge to trunk rev 18332 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fldap-integ;p=thirdparty%2Fkrb5.git merge to trunk rev 18332 git-svn-id: svn://anonsvn.mit.edu/krb5/branches/ldap-integ@18333 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 85adb41113..62081052bd 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -158,9 +158,14 @@ fi dnl find dlopen AC_DEFUN([KRB5_AC_FIND_DLOPEN],[ -AC_CHECK_LIB(dl, dlopen,[DL_LIB=-ldl +old_LIBS="$LIBS" +DL_LIB= +AC_SEARCH_LIBS(dlopen, dl, [ +if test "$ac_cv_search_dlopen" != "none required"; then + DL_LIB=$ac_cv_search_dlopen +fi +LIBS="$old_LIBS" AC_DEFINE(USE_DLOPEN,1,[Define if dlopen should be used])]) -dnl AC_CHECK_LIB(ld, main, DL_LIB=-lld) AC_SUBST(DL_LIB) ]) diff --git a/src/appl/gssftp/ftpd/Makefile.in b/src/appl/gssftp/ftpd/Makefile.in index 1f0444c657..0050893263 100644 --- a/src/appl/gssftp/ftpd/Makefile.in +++ b/src/appl/gssftp/ftpd/Makefile.in @@ -111,4 +111,3 @@ $(OUTPRE)secure.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ $(SRCTOP)/include/kerberosIV/des.h $(SRCTOP)/include/kerberosIV/krb.h \ $(srcdir)/../arpa/ftp.h $(srcdir)/../ftp/secure.c secure.h $(OUTPRE)getdtablesize.$(OBJEXT): $(srcdir)/../../bsd/getdtablesize.c -$(OUTPRE)setenv.$(OBJEXT): $(srcdir)/../../bsd/setenv.c diff --git a/src/kadmin/ktutil/ktutil.M b/src/kadmin/ktutil/ktutil.M index de5fe7cb7f..9e6d46dfe0 100644 --- a/src/kadmin/ktutil/ktutil.M +++ b/src/kadmin/ktutil/ktutil.M @@ -43,11 +43,15 @@ Clear the current keylist. Alias: .BR clear . .TP \fBdelete_entry\fP \fIslot\fP -Delets the entry in slot number +Delete the entry in slot number .I slot -from the current keylist. Alais: +from the current keylist. Alias: .BR delent . .TP +\fBadd_entry\fP (\-key | \-password) \-p \fIprincipal\fP \-k \fIkvno\fP \-e \fIenctype\fP +Add principal to keylist using key or password. Alias: +.BR addent . +.TP .BR list_requests Displays a listing of available commands. Aliases: .BR lr , diff --git a/src/lib/ccapi/client/ccache.c b/src/lib/ccapi/client/ccache.c index 07e9b8e879..c442a88278 100644 --- a/src/lib/ccapi/client/ccache.c +++ b/src/lib/ccapi/client/ccache.c @@ -816,9 +816,10 @@ cc_int_ccache_move( cc_ccache_t source, return code; } +cc_int32 cc_int_ccache_lock( cc_ccache_t ccache, - cc_uint32 lock_type, - cc_uint32 block ) + cc_uint32 lock_type, + cc_uint32 block ) { cc_int_ccache_t int_ccache; cc_msg_t *request = NULL; @@ -1004,7 +1005,7 @@ cc_int_ccache_get_last_default_time( cc_ccache_t ccache, } cc_int32 -cc_int_ccache_get_change_time( cc_ccache_t ccache, cc_time* time ) +cc_int_ccache_get_change_time( cc_ccache_t ccache, cc_time* change_time ) { cc_int_ccache_t int_ccache; cc_msg_t *request = NULL; @@ -1049,7 +1050,7 @@ cc_int_ccache_get_change_time( cc_ccache_t ccache, cc_time* time ) ccmsg_ccache_get_change_time_resp_t * response_header = (ccmsg_ccache_get_change_time_resp_t*)response->header; t64 = htonll(response_header->time); /* TODO: validate that we do not overflow 'time' */ - *time = t64; + *change_time = t64; code = ccNoError; } else { code = ccErrBadInternalMessage; diff --git a/src/lib/ccapi/client/ccache.h b/src/lib/ccapi/client/ccache.h index 0a92ebf63d..255cf2a421 100644 --- a/src/lib/ccapi/client/ccache.h +++ b/src/lib/ccapi/client/ccache.h @@ -114,11 +114,11 @@ cc_int_ccache_unlock( cc_ccache_t ccache ); cc_int32 cc_int_ccache_get_last_default_time( cc_ccache_t ccache, - cc_time* time ); + cc_time* last_default_tim ); cc_int32 cc_int_ccache_get_change_time( cc_ccache_t ccache, - cc_time* time ); + cc_time* change_time ); cc_int32 cc_int_ccache_compare( cc_ccache_t ccache, @@ -128,12 +128,12 @@ cc_int_ccache_compare( cc_ccache_t ccache, cc_int32 cc_int_ccache_get_kdc_time_offset( cc_ccache_t ccache, cc_int32 credentials_version, - cc_time* time_offset ); + cc_time* kdc_time_offset ); cc_int32 cc_int_ccache_set_kdc_time_offset( cc_ccache_t ccache, cc_int32 credentials_version, - cc_time time_offset ); + cc_time kdc_time_offset ); cc_int32 cc_int_ccache_clear_kdc_time_offset( cc_ccache_t ccache, diff --git a/src/lib/ccapi/client/context.c b/src/lib/ccapi/client/context.c index 5d88d46868..4bcfc040c8 100644 --- a/src/lib/ccapi/client/context.c +++ b/src/lib/ccapi/client/context.c @@ -154,7 +154,7 @@ cc_int_context_release( cc_context_t context ) cc_int32 cc_int_context_get_change_time( cc_context_t context, - cc_time* time) + cc_time* change_time) { cc_int_context_t int_context; cc_msg_t *request = NULL; @@ -199,7 +199,7 @@ cc_int_context_get_change_time( cc_context_t context, response_header = (ccmsg_ctx_get_change_time_resp_t*)response->header; t64 = ntohll(response_header->time); /* TODO: validate that value is not greater than can fit in cc_time */ - *time = (cc_time)t64; + *change_time = (cc_time)t64; code = ccNoError; } else { code = ccErrBadInternalMessage; diff --git a/src/lib/ccapi/client/context.h b/src/lib/ccapi/client/context.h index 6ff113a269..eb0ea520e3 100644 --- a/src/lib/ccapi/client/context.h +++ b/src/lib/ccapi/client/context.h @@ -66,7 +66,7 @@ cc_int_context_release( cc_context_t context ); cc_int32 cc_int_context_get_change_time( cc_context_t context, - cc_time* time); + cc_time* change_time); cc_int32 cc_int_context_get_default_ccache_name( cc_context_t context, diff --git a/src/lib/ccapi/common/generic_lists.c b/src/lib/ccapi/common/generic_lists.c index 2c7398313d..62f8d8de40 100644 --- a/src/lib/ccapi/common/generic_lists.c +++ b/src/lib/ccapi/common/generic_lists.c @@ -117,7 +117,7 @@ cci_generic_list_new(cc_generic_list_head_t ** listpp) if (ret == NULL) return ccErrNoMem; - ret->type = generic; + ret->type = cc_generic_list; ret->head = ret->tail = NULL; *listpp = ret; diff --git a/src/lib/ccapi/common/marshall.c b/src/lib/ccapi/common/marshall.c index 48abb33702..b2433cb1da 100644 --- a/src/lib/ccapi/common/marshall.c +++ b/src/lib/ccapi/common/marshall.c @@ -1,441 +1,441 @@ -/* $Copyright: - * - * Copyright 2004-2006 by the Massachusetts Institute of Technology. - * - * All rights reserved. - * - * Export of this software from the United States of America may require a - * specific license from the United States Government. It is the - * responsibility of any person or organization contemplating export to - * obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute - * this software and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice appear in all - * copies and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of M.I.T. not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Furthermore if you - * modify this software you must label your software as modified software - * and not distribute it in such a fashion that it might be confused with - * the original MIT software. M.I.T. makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Individual source code files are copyright MIT, Cygnus Support, - * OpenVision, Oracle, Sun Soft, FundsXpress, and others. - * - * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira, - * and Zephyr are trademarks of the Massachusetts Institute of Technology - * (MIT). No commercial use of these trademarks may be made without prior - * written permission of MIT. - * - * "Commercial use" means use of a name in a product or other for-profit - * manner. It does NOT prevent a commercial firm from referring to the MIT - * trademarks in order to convey information (although in doing so, - * recognition of their trademark status should be given). - * $ - */ - -/* marshall.c */ - -#include -#include -#include -#include -#include "msg.h" -#include "msg_headers.h" -#include "marshall.h" - -cc_int32 -cci_creds_v4_marshall( cc_credentials_v4_t * creds, - char ** pflat, - cc_uint32 * plen) -{ - cc_uint32 len; - char * flat; - cci_flat_creds_v4_t * header; - cc_time64 t64; - - if ( creds == NULL || pflat == NULL || plen == NULL ) - return ccErrBadParam; - - len = sizeof(cci_flat_creds_v4_t); - flat = (char *)malloc(len); - if ( flat == NULL ) - return ccErrNoMem; - memset(flat, 0, len); - - header = (cci_flat_creds_v4_t *)flat; - header->version = htonl(creds->version); - memcpy(header->principal, creds->principal, cc_v4_name_size); - memcpy(header->principal_instance, creds->principal_instance, cc_v4_instance_size); - memcpy(header->service, creds->service, cc_v4_name_size); - memcpy(header->service_instance, creds->service_instance, cc_v4_instance_size); - memcpy(header->realm, creds->realm, cc_v4_realm_size); - memcpy(header->session_key, creds->session_key, cc_v4_key_size); - header->kvno = htonl(creds->kvno); - header->string_to_key_type = htonl(creds->string_to_key_type); - t64 = creds->issue_date; - header->issue_date = htonll(t64); - header->lifetime = htonl(creds->lifetime); - /* TODO: verify that address is stored in host order */ - header->address = htonl(creds->address); - header->ticket_size = htonl(creds->ticket_size); - memcpy(header->ticket, creds->ticket, cc_v4_ticket_size); - - *pflat = flat; - *plen = len; - - return ccNoError; -} - -cc_int32 -cci_creds_v4_unmarshall( char * flat, - cc_uint32 len, - cc_credentials_union * creds_union) -{ - struct cci_flat_creds_v4 * header; - cc_credentials_v4_t * creds; - cc_time64 t64; - - if ( flat == NULL || len == 0 || creds_union == NULL ) - return ccErrBadParam; - - creds_union->version = cc_credentials_v4; - - header = (cci_flat_creds_v4_t *)flat; - - creds = (cc_credentials_v4_t *)malloc(sizeof(cc_credentials_v4_t)); - if ( creds == NULL ) - return ccErrNoMem; - - creds->version = ntohl(header->version); - memcpy(creds->principal, header->principal, cc_v4_name_size); - memcpy(creds->principal_instance, header->principal_instance, cc_v4_instance_size); - memcpy(creds->service, header->service, cc_v4_name_size); - memcpy(creds->service_instance, header->service_instance, cc_v4_instance_size); - memcpy(creds->realm, header->realm, cc_v4_realm_size); - memcpy(creds->session_key, header->session_key, cc_v4_key_size); - creds->kvno = htonl(header->kvno); - creds->string_to_key_type = htonl(header->string_to_key_type); - t64 = header->issue_date; - creds->issue_date = (cc_time64)ntohll(t64); - creds->lifetime = (cc_int32)ntohl(header->lifetime); - /* TODO: verify that address is stored in host order */ - creds->address = ntohl(header->address); - creds->ticket_size = ntohl(header->ticket_size); - memcpy(creds->ticket, header->ticket, cc_v4_ticket_size); - - creds_union->credentials.credentials_v4 = creds; - - return ccNoError; -} - - -cc_int32 -cci_creds_cc_data_array_count_entries( cc_data ** array, cc_uint32 * pcount) -{ - cc_uint32 count; - - if (array == NULL) { - *pcount = 0; - return ccNoError; - } - - for ( count=0; array[count] != NULL ; count++) ; - - *pcount = count; - return ccNoError; -} - -cc_int32 -cci_creds_v5_compute_flat_size( cc_credentials_v5_t * creds, cc_uint32 * plen) -{ - cc_uint32 len; - cc_uint32 i, count; - - len = sizeof(struct cci_flat_creds_v5); - - if (creds->client) - len += strlen(creds->client) + 1; - - if (creds->server) - len += strlen(creds->server) + 1; - - len += creds->keyblock.length; - - cci_creds_cc_data_array_count_entries( creds->addresses, &count ); - len += count * sizeof(cc_flat_data); - for ( i=0; iaddresses[i]->length; - } - - len += creds->ticket.length; - len += creds->second_ticket.length; - - cci_creds_cc_data_array_count_entries( creds->authdata, &count ); - len += count * sizeof(cc_flat_data); - for ( i=0; iauthdata[i]->length; - } - - *plen = len; - return ccNoError; -} - -cc_int32 -cci_creds_v5_marshall( cc_credentials_v5_t * creds, - char ** pflat, - cc_uint32 * plen) -{ - cc_uint32 len; - char * flat; - struct cci_flat_creds_v5 * header; - cc_uint32 length; - cc_uint32 offset; - cc_time64 t64; - cc_uint32 count; - cc_uint32 i; - - if ( creds == NULL || pflat == NULL || plen == NULL ) - return ccErrBadParam; - - cci_creds_v5_compute_flat_size(creds, &len); - - flat = (char *)malloc(len); - if ( flat == NULL ) - return ccErrNoMem; - memset(flat, 0, len); - - offset = sizeof(struct cci_flat_creds_v5); - header = (struct cci_flat_creds_v5 *)flat; - header->version = htonl(FLAT_CREDS_V5_VERSION); - if (creds->client) { - length = strlen(creds->client) + 1; - header->client.length = htonl(length); - header->client.data = htonl(offset); - memcpy(flat + offset, creds->client, length); - offset += length; - } - - if (creds->server) { - length = strlen(creds->server) + 1; - header->server.length = htonl(length); - header->server.data = htonl(offset); - memcpy(flat + offset, creds->server, length); - offset += length; - } - - header->keyblock.type = htonl(creds->keyblock.type); - if (creds->keyblock.length) { - length = creds->keyblock.length; - header->keyblock.length = htonl(length); - header->keyblock.data = htonl(offset); - memcpy(flat + offset, creds->keyblock.data, length); - offset += length; - } - - t64 = creds->authtime; - header->authtime = htonll(t64); - t64 = creds->starttime; - header->starttime = htonll(t64); - t64 = creds->endtime; - header->endtime = htonll(t64); - t64 = creds->renew_till; - header->renew_till = htonll(t64); - - header->is_skey = htonl(creds->is_skey); - header->ticket_flags = htonl(creds->ticket_flags); - - cci_creds_cc_data_array_count_entries( creds->addresses, &count ); - if ( count ) { - cc_flat_data * addresses = (cc_flat_data *)flat + offset; - header->address_count = htonl(count); - header->addresses = htonl(offset); - offset += count * sizeof(cc_flat_data); - - for ( i=0; i < count; i++ ) { - addresses[i].type = htonl(creds->addresses[i]->type); - if (creds->addresses[i]->length) { - length = creds->addresses[i]->length; - addresses[i].length = htonl(length); - addresses[i].data = htonl(offset); - /* TODO: verify that addresses are stored in network order */ - memcpy(flat + offset, creds->addresses[i]->data, length); - offset += length; - } - } - } - - header->ticket.type = htonl(creds->ticket.type); - if (creds->ticket.length) { - length = creds->ticket.length; - header->ticket.length = htonl(length); - header->ticket.data = htonl(offset); - memcpy(flat + offset, creds->ticket.data, length); - offset += length; - } - - header->second_ticket.type = htonl(creds->second_ticket.type); - if (creds->second_ticket.length) { - length = creds->second_ticket.length; - header->second_ticket.length = htonl(length); - header->second_ticket.data = htonl(offset); - memcpy(flat + offset, creds->second_ticket.data, length); - offset += length; - } - - cci_creds_cc_data_array_count_entries( creds->authdata, &count ); - if ( count ) { - cc_flat_data * authdata = (cc_flat_data *)flat + offset; - - header->authdata_count = htonl(count); - header->authdata = (offset); - offset += count * sizeof(cc_flat_data); - - for ( i=0; i < count; i++ ) { - authdata[i].type = htonl(creds->authdata[i]->type); - if (creds->authdata[i]->length) { - length = creds->authdata[i]->length; - authdata[i].length = htonl(length); - authdata[i].data = htonl(offset); - memcpy(flat + offset, creds->authdata[i]->data, length); - offset += length; - } - } - } - - *pflat = flat; - *plen = len; - return ccNoError; -} - - -// TODO: a much better job of checking for out of memory errors -// and validating that we do not read beyond the flat input -// data buffer - -cc_int32 -cci_creds_v5_unmarshall( char * flat, - cc_uint32 len, - cc_credentials_union * creds_union) -{ - struct cci_flat_creds_v5 * header; - cc_credentials_v5_t * creds; - cc_flat_data * flat_data; - cc_time64 t64; - cc_uint32 length; - cc_uint32 count; - cc_uint32 i; - - if ( flat == NULL || len == 0 || creds_union == NULL ) - return ccErrBadParam; - - creds_union->version = cc_credentials_v5; - - header = (struct cci_flat_creds_v5 *)flat; - - if ( ntohl(header->version) != FLAT_CREDS_V5_VERSION ) - return ccErrBadParam; - - creds = (cc_credentials_v5_t *)malloc(sizeof(cc_credentials_v5_t)); - if ( creds == NULL ) - return ccErrNoMem; - memset(creds, 0, sizeof(cc_credentials_v5_t)); - - if ( header->client.length ) { - length = ntohl(header->client.length); - creds->client = (char *)malloc(length); - memcpy(creds->client, flat + header->client.data, length); - } - - if ( header->server.length ) { - length = ntohl(header->server.length); - creds->server = (char *)malloc(length); - memcpy(creds->server, flat + header->server.data, length); - } - - creds->keyblock.type = ntohl(header->keyblock.type); - if ( header->keyblock.length ) { - length = ntohl(header->keyblock.length); - creds->keyblock.length = length; - creds->keyblock.data = malloc(length); - memcpy(creds->keyblock.data, flat + header->keyblock.data, length); - } - - /* TODO: need to perform overflow validation checks to ensure - * that we do not attempt to store too large a value into cc_time_t - * when it is a 32-bit field. - */ - t64 = ntohll(header->authtime); - creds->authtime = (cc_time)t64; - t64 = ntohll(header->starttime); - creds->starttime = (cc_time)t64; - t64 = ntohll(header->endtime); - creds->endtime = (cc_time)t64; - t64 = ntohll(header->renew_till); - creds->renew_till = (cc_time)t64; - - creds->is_skey = ntohl(header->is_skey); - creds->ticket_flags = ntohl(header->ticket_flags); - - count = ntohl(header->address_count); - creds->addresses = (cc_data **) malloc((count + 1) * sizeof(cc_data *)); - flat_data = (cc_flat_data *)flat + header->addresses; - for ( i=0 ; i < count ; i++ ) { - creds->addresses[i] = (cc_data *)malloc(sizeof(cc_data)); - creds->addresses[i]->type = ntohl(flat_data[i].type); - length = ntohl(flat_data[i].length); - creds->addresses[i]->length = length; - if ( length ) { - creds->addresses[i]->data = malloc(length); - /* TODO: verify that addresses are stored in network order */ - memcpy(creds->addresses[i]->data, flat + flat_data[i].data, length); - } else { - creds->addresses[i]->data = NULL; - } - } - creds->addresses[i] = NULL; - - creds->ticket.type = ntohl(header->ticket.type); - length = ntohl(header->ticket.length); - if ( length ) { - creds->ticket.length = length; - creds->ticket.data = malloc(length); - memcpy(creds->ticket.data, flat + header->ticket.data, length); - } - - creds->second_ticket.type = header->second_ticket.type; - if ( header->second_ticket.length ) { - creds->second_ticket.length = header->second_ticket.length; - creds->second_ticket.data = malloc(creds->second_ticket.length); - memcpy(creds->second_ticket.data, flat + header->second_ticket.data, creds->second_ticket.length); - } - - count = ntohl(header->authdata_count); - creds->authdata = (cc_data **) malloc((count + 1) * sizeof(cc_data *)); - flat_data = (cc_flat_data *)flat + header->authdata; - for ( i=0 ; i < count ; i++ ) { - creds->authdata[i] = (cc_data *)malloc(sizeof(cc_data)); - creds->authdata[i]->type = ntohl(flat_data[i].type); - length = ntohl(flat_data[i].length); - creds->authdata[i]->length = length; - if ( length ) { - creds->authdata[i]->data = malloc(length); - memcpy(creds->authdata[i]->data, flat + flat_data[i].data, length); - } else { - creds->authdata[i]->data = NULL; - } - } - creds->authdata[i] = NULL; - - creds_union->credentials.credentials_v5 = creds; - - return ccNoError; -} - +/* $Copyright: + * + * Copyright 2004-2006 by the Massachusetts Institute of Technology. + * + * All rights reserved. + * + * Export of this software from the United States of America may require a + * specific license from the United States Government. It is the + * responsibility of any person or organization contemplating export to + * obtain such a license before exporting. + * + * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute + * this software and its documentation for any purpose and without fee is + * hereby granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of M.I.T. not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. Furthermore if you + * modify this software you must label your software as modified software + * and not distribute it in such a fashion that it might be confused with + * the original MIT software. M.I.T. makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Individual source code files are copyright MIT, Cygnus Support, + * OpenVision, Oracle, Sun Soft, FundsXpress, and others. + * + * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira, + * and Zephyr are trademarks of the Massachusetts Institute of Technology + * (MIT). No commercial use of these trademarks may be made without prior + * written permission of MIT. + * + * "Commercial use" means use of a name in a product or other for-profit + * manner. It does NOT prevent a commercial firm from referring to the MIT + * trademarks in order to convey information (although in doing so, + * recognition of their trademark status should be given). + * $ + */ + +/* marshall.c */ + +#include +#include +#include +#include +#include "msg.h" +#include "msg_headers.h" +#include "marshall.h" + +cc_int32 +cci_creds_v4_marshall( cc_credentials_v4_t * creds, + char ** pflat, + cc_uint32 * plen) +{ + cc_uint32 len; + char * flat; + cci_flat_creds_v4_t * header; + cc_time64 t64; + + if ( creds == NULL || pflat == NULL || plen == NULL ) + return ccErrBadParam; + + len = sizeof(cci_flat_creds_v4_t); + flat = (char *)malloc(len); + if ( flat == NULL ) + return ccErrNoMem; + memset(flat, 0, len); + + header = (cci_flat_creds_v4_t *)flat; + header->version = htonl(creds->version); + memcpy(header->principal, creds->principal, cc_v4_name_size); + memcpy(header->principal_instance, creds->principal_instance, cc_v4_instance_size); + memcpy(header->service, creds->service, cc_v4_name_size); + memcpy(header->service_instance, creds->service_instance, cc_v4_instance_size); + memcpy(header->realm, creds->realm, cc_v4_realm_size); + memcpy(header->session_key, creds->session_key, cc_v4_key_size); + header->kvno = htonl(creds->kvno); + header->string_to_key_type = htonl(creds->string_to_key_type); + t64 = creds->issue_date; + header->issue_date = htonll(t64); + header->lifetime = htonl(creds->lifetime); + /* TODO: verify that address is stored in host order */ + header->address = htonl(creds->address); + header->ticket_size = htonl(creds->ticket_size); + memcpy(header->ticket, creds->ticket, cc_v4_ticket_size); + + *pflat = flat; + *plen = len; + + return ccNoError; +} + +cc_int32 +cci_creds_v4_unmarshall( char * flat, + cc_uint32 len, + cc_credentials_union * creds_union) +{ + struct cci_flat_creds_v4 * header; + cc_credentials_v4_t * creds; + cc_time64 t64; + + if ( flat == NULL || len == 0 || creds_union == NULL ) + return ccErrBadParam; + + creds_union->version = cc_credentials_v4; + + header = (cci_flat_creds_v4_t *)flat; + + creds = (cc_credentials_v4_t *)malloc(sizeof(cc_credentials_v4_t)); + if ( creds == NULL ) + return ccErrNoMem; + + creds->version = ntohl(header->version); + memcpy(creds->principal, header->principal, cc_v4_name_size); + memcpy(creds->principal_instance, header->principal_instance, cc_v4_instance_size); + memcpy(creds->service, header->service, cc_v4_name_size); + memcpy(creds->service_instance, header->service_instance, cc_v4_instance_size); + memcpy(creds->realm, header->realm, cc_v4_realm_size); + memcpy(creds->session_key, header->session_key, cc_v4_key_size); + creds->kvno = htonl(header->kvno); + creds->string_to_key_type = htonl(header->string_to_key_type); + t64 = header->issue_date; + creds->issue_date = (cc_time64)ntohll(t64); + creds->lifetime = (cc_int32)ntohl(header->lifetime); + /* TODO: verify that address is stored in host order */ + creds->address = ntohl(header->address); + creds->ticket_size = ntohl(header->ticket_size); + memcpy(creds->ticket, header->ticket, cc_v4_ticket_size); + + creds_union->credentials.credentials_v4 = creds; + + return ccNoError; +} + + +static cc_int32 +cci_creds_cc_data_array_count_entries( cc_data ** array, cc_uint32 * pcount) +{ + cc_uint32 count; + + if (array == NULL) { + *pcount = 0; + return ccNoError; + } + + for ( count=0; array[count] != NULL ; count++) ; + + *pcount = count; + return ccNoError; +} + +static cc_int32 +cci_creds_v5_compute_flat_size( cc_credentials_v5_t * creds, cc_uint32 * plen) +{ + cc_uint32 len; + cc_uint32 i, count; + + len = sizeof(struct cci_flat_creds_v5); + + if (creds->client) + len += strlen(creds->client) + 1; + + if (creds->server) + len += strlen(creds->server) + 1; + + len += creds->keyblock.length; + + cci_creds_cc_data_array_count_entries( creds->addresses, &count ); + len += count * sizeof(cc_flat_data); + for ( i=0; iaddresses[i]->length; + } + + len += creds->ticket.length; + len += creds->second_ticket.length; + + cci_creds_cc_data_array_count_entries( creds->authdata, &count ); + len += count * sizeof(cc_flat_data); + for ( i=0; iauthdata[i]->length; + } + + *plen = len; + return ccNoError; +} + +cc_int32 +cci_creds_v5_marshall( cc_credentials_v5_t * creds, + char ** pflat, + cc_uint32 * plen) +{ + cc_uint32 len; + char * flat; + struct cci_flat_creds_v5 * header; + cc_uint32 length; + cc_uint32 offset; + cc_time64 t64; + cc_uint32 count; + cc_uint32 i; + + if ( creds == NULL || pflat == NULL || plen == NULL ) + return ccErrBadParam; + + cci_creds_v5_compute_flat_size(creds, &len); + + flat = (char *)malloc(len); + if ( flat == NULL ) + return ccErrNoMem; + memset(flat, 0, len); + + offset = sizeof(struct cci_flat_creds_v5); + header = (struct cci_flat_creds_v5 *)flat; + header->version = htonl(FLAT_CREDS_V5_VERSION); + if (creds->client) { + length = strlen(creds->client) + 1; + header->client.length = htonl(length); + header->client.data = htonl(offset); + memcpy(flat + offset, creds->client, length); + offset += length; + } + + if (creds->server) { + length = strlen(creds->server) + 1; + header->server.length = htonl(length); + header->server.data = htonl(offset); + memcpy(flat + offset, creds->server, length); + offset += length; + } + + header->keyblock.type = htonl(creds->keyblock.type); + if (creds->keyblock.length) { + length = creds->keyblock.length; + header->keyblock.length = htonl(length); + header->keyblock.data = htonl(offset); + memcpy(flat + offset, creds->keyblock.data, length); + offset += length; + } + + t64 = creds->authtime; + header->authtime = htonll(t64); + t64 = creds->starttime; + header->starttime = htonll(t64); + t64 = creds->endtime; + header->endtime = htonll(t64); + t64 = creds->renew_till; + header->renew_till = htonll(t64); + + header->is_skey = htonl(creds->is_skey); + header->ticket_flags = htonl(creds->ticket_flags); + + cci_creds_cc_data_array_count_entries( creds->addresses, &count ); + if ( count ) { + cc_flat_data * addresses = (cc_flat_data *)flat + offset; + header->address_count = htonl(count); + header->addresses = htonl(offset); + offset += count * sizeof(cc_flat_data); + + for ( i=0; i < count; i++ ) { + addresses[i].type = htonl(creds->addresses[i]->type); + if (creds->addresses[i]->length) { + length = creds->addresses[i]->length; + addresses[i].length = htonl(length); + addresses[i].data = htonl(offset); + /* TODO: verify that addresses are stored in network order */ + memcpy(flat + offset, creds->addresses[i]->data, length); + offset += length; + } + } + } + + header->ticket.type = htonl(creds->ticket.type); + if (creds->ticket.length) { + length = creds->ticket.length; + header->ticket.length = htonl(length); + header->ticket.data = htonl(offset); + memcpy(flat + offset, creds->ticket.data, length); + offset += length; + } + + header->second_ticket.type = htonl(creds->second_ticket.type); + if (creds->second_ticket.length) { + length = creds->second_ticket.length; + header->second_ticket.length = htonl(length); + header->second_ticket.data = htonl(offset); + memcpy(flat + offset, creds->second_ticket.data, length); + offset += length; + } + + cci_creds_cc_data_array_count_entries( creds->authdata, &count ); + if ( count ) { + cc_flat_data * authdata = (cc_flat_data *)flat + offset; + + header->authdata_count = htonl(count); + header->authdata = (offset); + offset += count * sizeof(cc_flat_data); + + for ( i=0; i < count; i++ ) { + authdata[i].type = htonl(creds->authdata[i]->type); + if (creds->authdata[i]->length) { + length = creds->authdata[i]->length; + authdata[i].length = htonl(length); + authdata[i].data = htonl(offset); + memcpy(flat + offset, creds->authdata[i]->data, length); + offset += length; + } + } + } + + *pflat = flat; + *plen = len; + return ccNoError; +} + + +// TODO: a much better job of checking for out of memory errors +// and validating that we do not read beyond the flat input +// data buffer + +cc_int32 +cci_creds_v5_unmarshall( char * flat, + cc_uint32 len, + cc_credentials_union * creds_union) +{ + struct cci_flat_creds_v5 * header; + cc_credentials_v5_t * creds; + cc_flat_data * flat_data; + cc_time64 t64; + cc_uint32 length; + cc_uint32 count; + cc_uint32 i; + + if ( flat == NULL || len == 0 || creds_union == NULL ) + return ccErrBadParam; + + creds_union->version = cc_credentials_v5; + + header = (struct cci_flat_creds_v5 *)flat; + + if ( ntohl(header->version) != FLAT_CREDS_V5_VERSION ) + return ccErrBadParam; + + creds = (cc_credentials_v5_t *)malloc(sizeof(cc_credentials_v5_t)); + if ( creds == NULL ) + return ccErrNoMem; + memset(creds, 0, sizeof(cc_credentials_v5_t)); + + if ( header->client.length ) { + length = ntohl(header->client.length); + creds->client = (char *)malloc(length); + memcpy(creds->client, flat + header->client.data, length); + } + + if ( header->server.length ) { + length = ntohl(header->server.length); + creds->server = (char *)malloc(length); + memcpy(creds->server, flat + header->server.data, length); + } + + creds->keyblock.type = ntohl(header->keyblock.type); + if ( header->keyblock.length ) { + length = ntohl(header->keyblock.length); + creds->keyblock.length = length; + creds->keyblock.data = malloc(length); + memcpy(creds->keyblock.data, flat + header->keyblock.data, length); + } + + /* TODO: need to perform overflow validation checks to ensure + * that we do not attempt to store too large a value into cc_time_t + * when it is a 32-bit field. + */ + t64 = ntohll(header->authtime); + creds->authtime = (cc_time)t64; + t64 = ntohll(header->starttime); + creds->starttime = (cc_time)t64; + t64 = ntohll(header->endtime); + creds->endtime = (cc_time)t64; + t64 = ntohll(header->renew_till); + creds->renew_till = (cc_time)t64; + + creds->is_skey = ntohl(header->is_skey); + creds->ticket_flags = ntohl(header->ticket_flags); + + count = ntohl(header->address_count); + creds->addresses = (cc_data **) malloc((count + 1) * sizeof(cc_data *)); + flat_data = (cc_flat_data *)flat + header->addresses; + for ( i=0 ; i < count ; i++ ) { + creds->addresses[i] = (cc_data *)malloc(sizeof(cc_data)); + creds->addresses[i]->type = ntohl(flat_data[i].type); + length = ntohl(flat_data[i].length); + creds->addresses[i]->length = length; + if ( length ) { + creds->addresses[i]->data = malloc(length); + /* TODO: verify that addresses are stored in network order */ + memcpy(creds->addresses[i]->data, flat + flat_data[i].data, length); + } else { + creds->addresses[i]->data = NULL; + } + } + creds->addresses[i] = NULL; + + creds->ticket.type = ntohl(header->ticket.type); + length = ntohl(header->ticket.length); + if ( length ) { + creds->ticket.length = length; + creds->ticket.data = malloc(length); + memcpy(creds->ticket.data, flat + header->ticket.data, length); + } + + creds->second_ticket.type = header->second_ticket.type; + if ( header->second_ticket.length ) { + creds->second_ticket.length = header->second_ticket.length; + creds->second_ticket.data = malloc(creds->second_ticket.length); + memcpy(creds->second_ticket.data, flat + header->second_ticket.data, creds->second_ticket.length); + } + + count = ntohl(header->authdata_count); + creds->authdata = (cc_data **) malloc((count + 1) * sizeof(cc_data *)); + flat_data = (cc_flat_data *)flat + header->authdata; + for ( i=0 ; i < count ; i++ ) { + creds->authdata[i] = (cc_data *)malloc(sizeof(cc_data)); + creds->authdata[i]->type = ntohl(flat_data[i].type); + length = ntohl(flat_data[i].length); + creds->authdata[i]->length = length; + if ( length ) { + creds->authdata[i]->data = malloc(length); + memcpy(creds->authdata[i]->data, flat + flat_data[i].data, length); + } else { + creds->authdata[i]->data = NULL; + } + } + creds->authdata[i] = NULL; + + creds_union->credentials.credentials_v5 = creds; + + return ccNoError; +} + diff --git a/src/lib/ccapi/common/msg.c b/src/lib/ccapi/common/msg.c index 789fc87464..fa051e95a5 100644 --- a/src/lib/ccapi/common/msg.c +++ b/src/lib/ccapi/common/msg.c @@ -1,622 +1,622 @@ -/* $Copyright: - * - * Copyright 2004-2006 by the Massachusetts Institute of Technology. - * - * All rights reserved. - * - * Export of this software from the United States of America may require a - * specific license from the United States Government. It is the - * responsibility of any person or organization contemplating export to - * obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute - * this software and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice appear in all - * copies and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of M.I.T. not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Furthermore if you - * modify this software you must label your software as modified software - * and not distribute it in such a fashion that it might be confused with - * the original MIT software. M.I.T. makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Individual source code files are copyright MIT, Cygnus Support, - * OpenVision, Oracle, Sun Soft, FundsXpress, and others. - * - * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira, - * and Zephyr are trademarks of the Massachusetts Institute of Technology - * (MIT). No commercial use of these trademarks may be made without prior - * written permission of MIT. - * - * "Commercial use" means use of a name in a product or other for-profit - * manner. It does NOT prevent a commercial firm from referring to the MIT - * trademarks in order to convey information (although in doing so, - * recognition of their trademark status should be given). - * $ - */ - -/* - * Verifiable, extensible message format. - * - * Format: - * - * - * - * - * - * - * - * - * - * ... - * - * - * If the header has variable length data it is included in the data blobs. - * The header field has the offset from the beginning of the message of the 1st - * byte of the data and the length of the data. - */ - -#include "CredentialsCache.h" -#include "msg.h" -#include "generic_lists.h" - -#include -#include -#include -#include - -/** - * cci_msg_new() - * - * Purpose: Allocate and initialize a new cc_msg_t structure - * - * Input parameter (type) in host order - * - * Return: non-NULL, the msg - * NULL, failure - * - * Errors: ccErrNoMem - * - */ -cc_int32 -cci_msg_new(cc_uint32 type, cc_msg_t** msgpp) -{ - // type should be validated. If invalid set error to ccErrBadParam - cc_msg_t* msg; - - if ( type > CC_MSG_MAX_TYPE || msgpp == NULL ) - return ccErrBadParam; - - msg = (cc_msg_t*)malloc(sizeof(cc_msg_t)); - if (msg == NULL) - return ccErrNoMem; - - msg->type = type; - msg->flat = NULL; - msg->header = NULL; - msg->flat_len = 0; - msg->header_len = 0; - msg->magic = 0; - cci_generic_list_new(&msg->data_blobs); - if (msg->data_blobs == NULL) { - // pass on error from previous call - free(msg); - return ccErrNoMem; - } - - *msgpp = msg; - return ccNoError; -} - -/** - * cci_msg_calc_header_size() - * - * Purpose: Calculates the size of the header - * - * Return: the size in bytes - * - * Errors: ccErrBadParam - * - */ -cc_int32 -cci_msg_calc_header_size(cc_msg_t* msg, cc_uint32 * lenp) -{ - int header_len = 12; /* header size, entire size, type */ - - if ( msg == NULL || lenp == NULL ) - return ccErrBadParam; - - header_len += msg->header_len; - *lenp = header_len; - return ccNoError; -} - -/** - * cci_msg_calc_size() - * - * Purpose: Calculates the size of the message - * (does not include the magic bytes) - * - * Return: the size in bytes - * - * Errors: ccErrBadParam - * - */ -cc_int32 -cci_msg_calc_size(cc_msg_t* msg, cc_uint32 * lenp) -{ - cc_uint32 flat_len; - cc_generic_list_node_t* gen_node; - cc_generic_iterate_t* gen_iterator; - cc_int32 code; - - if ( msg == NULL || lenp == NULL ) - return ccErrBadParam; - - code = cci_msg_calc_header_size(msg, &flat_len); - if (code != ccNoError) - goto bad; - - code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); - if ( code != ccNoError ) - goto bad; - - while (cci_generic_iterate_has_next(gen_iterator)) { - code = cci_generic_iterate_next(gen_iterator, &gen_node); - if (code != ccNoError) - break; - flat_len += gen_node->len + BLOB_LEN; - } - cci_generic_free_iterator(gen_iterator); - if (code != ccNoError) - goto bad; - - flat_len += MAGIC_HEAD_LEN + MAGIC_DATA_LEN; - *lenp = flat_len; - - bad: - return code; -} - -/** - * cci_msg_add_data_blob() - * - * Purpose: Adds 'len' bytes of data to the msg - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_add_data_blob(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint32 *lenp) -{ - cc_int32 code; - - if (msg == NULL || data == NULL || len <= 0 || lenp == NULL) - return ccErrBadParam; - - code = cci_generic_list_append(msg->data_blobs, data, len, NULL); - if ( code != ccNoError ) - return code; - return cci_msg_calc_blob_pos(msg, data, len, lenp); -} - -/** - * cc_msg_ - * - * Purpose: - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_calc_blob_pos(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint32 * posp) -{ - cc_uint32 pos; - cc_generic_list_node_t* gen_node; - cc_generic_iterate_t* gen_iterator; - cc_int32 code; - - code = cci_msg_calc_header_size(msg, &pos); - pos += sizeof(cc_uint32); /*+ sizeof(cc_uint32) for magic*/ - - code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); - while (cci_generic_iterate_has_next(gen_iterator)) { - code = cci_generic_iterate_next(gen_iterator, &gen_node); - if (gen_node->len != len && gen_node->data != data) { - pos += gen_node->len + sizeof(cc_uint32); - } else { - cci_generic_free_iterator(gen_iterator); - *posp = pos + sizeof(cc_uint32); - return ccNoError; - } - } - - cci_generic_free_iterator(gen_iterator); - return ccIteratorEnd; -} - -/** - * cc_msg_ - * - * Purpose: - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_add_header(cc_msg_t* msg, void *header, cc_uint32 header_len) -{ - if ( msg == NULL || header == NULL ) - return ccErrBadParam; - - msg->header = header; - msg->header_len = header_len; - return ccNoError; -} - - -/** - * cc_msg_ - * - * Purpose: - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_flatten(cc_msg_t* msg, void **flatpp) -{ - cc_generic_list_node_t* gen_node; - cc_generic_iterate_t* gen_iterator; - char *cur_pos; - cc_uint32 zero = 0; - cc_uint32 magic = 0; - cc_uint32 msg_len; - cc_uint32 u32; - cc_int32 code; - - if (msg == NULL) - return ccErrBadParam; - - code = cci_msg_calc_size(msg,&msg->flat_len); - if ( code != ccNoError ) - return code; - - if (msg->flat_len > CC_MSG_MAX_SIZE) - return ccErrBadParam; - - msg->flat = (void *)malloc(msg->flat_len); - if (msg->flat == NULL) - return ccErrNoMem; - - cur_pos = msg->flat; - - u32 = htonl(msg->header_len); - memcpy(cur_pos,&u32,sizeof(cc_uint32)); - cur_pos+=sizeof(cc_uint32); - - u32 = htonl(msg->flat_len); - memcpy(cur_pos,&u32,sizeof(cc_uint32)); - cur_pos+=sizeof(cc_uint32); - - u32 = htonl(msg->type); - memcpy(cur_pos,&u32,sizeof(cc_uint32)); - cur_pos+=sizeof(cc_uint32); - - /* header data is already in network order */ - memcpy(cur_pos, msg->header, msg->header_len); - cur_pos += msg->header_len; - - u32 = htonl(zero); - memcpy(cur_pos, &u32, sizeof(cc_uint32)); /*will be magic number later*/ - cur_pos += sizeof(cc_uint32); - - code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); - if ( code != ccNoError ) { - free(msg->flat); - return code; - } - - while (cci_generic_iterate_has_next(gen_iterator)) { - code = cci_generic_iterate_next(gen_iterator, &gen_node); - if (code != ccNoError) { - free(gen_iterator); - free(msg->flat); - return code; - } - u32 = htonl(gen_node->len); - memcpy(cur_pos, &u32, sizeof(cc_uint32)); - cur_pos+=sizeof(cc_uint32); - - /* data already in network order */ - memcpy(cur_pos, gen_node->data, gen_node->len); - cur_pos += gen_node->len; - } - free(gen_iterator); - - u32 = htonl(zero); - memcpy(cur_pos, &u32, sizeof(cc_uint32)); /*magic number will go here later*/ - cur_pos += sizeof(cc_uint32); - - if (cur_pos - (char *)msg->flat != msg->flat_len) { - fprintf(stderr, "ERROR cur_pos - msg->flat = %d\n",msg->flat_len); - } - - cci_msg_calc_magic(msg->flat, msg->flat_len, &magic); - printf("magic = %d\n",magic); - - cci_msg_calc_header_size(msg, &msg_len); - memcpy((char *)msg->flat + msg_len, &magic, sizeof(cc_uint32)); - memcpy((char *)msg->flat + msg->flat_len - sizeof(cc_uint32), &magic, sizeof(cc_uint32)); - - if ( flatpp != NULL ) - *flatpp = msg->flat; - - return ccNoError; -} - -/** - * cc_msg_ - * - * Purpose: - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_calc_magic(void *flat, int flat_len, cc_uint32 * magicp) -{ - cc_uint32 magic = 0; - int i; - - for (i = 0; i < flat_len; i += sizeof(cc_uint32)) { - magic = magic ^ *(int *)((char *)flat + i); - } - *magicp = htonl(magic); - return ccNoError; -} - -/** - * cc_msg_ - * - * Purpose: - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_verify(void *flat, int flat_len, cc_uint32 * validp) -{ - cc_uint32 *magic1, *magic2; - cc_uint32 *pheader_len; - cc_uint32 header_len; - cc_uint32 *ptotal_len; - cc_uint32 total_len; - cc_uint32 *pblob_len; - cc_uint32 blob_len; - cc_uint32 *ptype; - cc_uint32 type; - cc_uint32 num_blobs = 0; - cc_uint32 zero = 0; - cc_uint32 msg_magic, msg_magic2; - - if (flat == NULL || flat_len <= 0 || validp == NULL) - return ccErrBadParam; - - pheader_len = flat; - ptotal_len = (cc_uint32 *)((char *)pheader_len + sizeof(cc_uint32)); - ptype = (cc_uint32 *)((char *)ptotal_len + sizeof(cc_uint32)); - - header_len = ntohl(*pheader_len); - total_len = ntohl(*ptotal_len); - type = ntohl(*ptype); - - if (total_len != flat_len) { - *validp = 0; - return ccNoError; - } - - if (header_len > flat_len) { - /*too weak. We could verify header_len against type spec header.*/ - *validp = 0; - return ccNoError; - } - if (type > CC_MSG_MAX_TYPE) { - *validp = 0; - return ccNoError; - } - - magic1 = (cc_uint32 *)((char *)ptype + sizeof(cc_uint32) + header_len); - if ((char *)magic1 - (char *)flat == (flat_len - 8)) { - /*There are no data blobs*/ - magic2 = (cc_uint32 *)((char *)magic1 + sizeof(cc_uint32)); - num_blobs = 0; - } else { - pblob_len = (cc_uint32 *)((char *)magic1 + sizeof(cc_uint32)); - num_blobs = 1; - blob_len = ntohl(*pblob_len); - - while (blob_len + sizeof(cc_uint32) + ((char *)pblob_len - (char *)flat) < (flat_len - sizeof(cc_uint32))) { - pblob_len = (cc_uint32 *)((char *)pblob_len + blob_len + sizeof(cc_uint32)); - num_blobs++; - blob_len = ntohl(*pblob_len); - } - - if (blob_len + sizeof(cc_uint32) + ((char *)pblob_len - (char *)flat) != (flat_len - sizeof(cc_uint32))) { - /*blobs didn't line up*/ - *validp = 0; - return ccNoError; - } - magic2 = (cc_uint32 *)((char *)pblob_len + blob_len + sizeof(cc_uint32)); /*2nd magic should be directly after the last blob*/ - } - - if (*magic1 != *magic2) { - *validp = 0; - return ccNoError; - } - msg_magic = *magic1; - - printf("%d %d\n", (char *)magic1 - (char *)flat, (char *)magic2 - (char *)flat); - - memcpy(magic1, &zero, sizeof(cc_uint32)); - memcpy(magic2, &zero, sizeof(cc_uint32)); - cci_msg_calc_magic(flat, flat_len, &msg_magic2); - /* both msg_magic and msg_magic2 are in network order */ - if (msg_magic != msg_magic2) { - *validp = 0; - return ccNoError; - } - memcpy(magic1, &msg_magic, sizeof(cc_uint32)); - memcpy(magic2, &msg_magic, sizeof(cc_uint32)); - - *validp = 1; - return ccNoError; -} - -/** - * cc_msg_ - * - * Purpose: - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_unflatten(void *flat, int flat_len, cc_msg_t** msgpp) -{ - cc_msg_t* msg; - char *cur_pos; - cc_uint32 blob_len; - char *blob; - cc_uint32 valid; - cc_int32 code; - - if ( flat == NULL || flat_len <= 0 || msgpp == NULL ) - return ccErrBadParam; - - code = cci_msg_new(0, &msg); - if (code) - return code; - - cci_msg_verify(flat, flat_len, &valid); - if (valid != 1) { - cci_msg_destroy(msg); - return ccErrBadParam; - } - - cur_pos = flat; - msg->flat = flat; - - msg->header_len = ntohl(*(cc_uint32 *)cur_pos); - cur_pos += sizeof(cc_uint32); - - msg->flat_len = ntohl(*(cc_uint32 *)cur_pos); - cur_pos += sizeof(cc_uint32); - - msg->type = ntohl(*(cc_uint32 *)cur_pos); - cur_pos += sizeof(cc_uint32); - - msg->header = (void *)malloc(msg->header_len); - if (msg->header == NULL) { - cci_msg_destroy(msg); - return ccErrNoMem; - } - memcpy(msg->header, cur_pos, msg->header_len); - cur_pos += msg->header_len; - - msg->magic = ntohl(*(cc_uint32 *)cur_pos); - cur_pos += sizeof(cc_uint32); - - if (cur_pos - (char *)flat != flat_len - 8) { /*at least 1 blob*/ - blob_len = ntohl(*(cc_uint32 *)cur_pos); - while (blob_len + (cur_pos - (char *)flat) + sizeof(cc_uint32) <= flat_len - sizeof(cc_uint32)) { - blob = (void *)malloc(blob_len); - if (blob == NULL) { - cci_msg_destroy(msg); - return ccErrNoMem; - } - memcpy(blob, cur_pos + sizeof(cc_uint32), blob_len); - cci_generic_list_append(msg->data_blobs, blob, blob_len, NULL); - - cur_pos += sizeof(cc_uint32) + blob_len; - blob_len = ntohl(*(int *)cur_pos); - } - } - *msgpp = msg; - return ccNoError; -} - -cc_int32 -cci_msg_retrieve_blob(cc_msg_t* msg, cc_uint32 blob_offset, cc_uint32 blob_len, char **blobp) -{ - cc_generic_iterate_t* gen_iterator; - cc_generic_list_node_t* gen_node; - void *ret; - cc_uint32 blob_pos; - cc_int32 code; - - /*Ensure that the message has been unflattened*/ - if ( msg == NULL || msg->flat == NULL || blob_offset > msg->flat_len || - blob_len > msg->flat_len - blob_offset || blobp == NULL) - return ccErrBadParam; - - code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); - while (cci_generic_iterate_has_next(gen_iterator)) { - code = cci_generic_iterate_next(gen_iterator, &gen_node); - code = cci_msg_calc_blob_pos(msg, gen_node->data, gen_node->len, &blob_pos); - if (blob_pos == blob_offset && gen_node->len == blob_len) { - free(gen_iterator); - ret = (void *)malloc(blob_len); - if (ret == NULL) - return ccErrNoMem; - memcpy(ret,(char *)msg->flat + blob_offset, blob_len); - *blobp = ret; - return ccNoError; - } - } - free(gen_iterator); - return ccIteratorEnd; -} - -/** - * cc_msg_ - * - * Purpose: - * - * Return: - * - * Errors: - * - */ -cc_int32 -cci_msg_destroy(cc_msg_t* msg) -{ - if (msg->flat != NULL) - free(msg->flat); - if (msg->header != NULL) - free(msg->header); - cci_generic_list_destroy(msg->data_blobs); - free(msg); - return ccNoError; -} - +/* $Copyright: + * + * Copyright 2004-2006 by the Massachusetts Institute of Technology. + * + * All rights reserved. + * + * Export of this software from the United States of America may require a + * specific license from the United States Government. It is the + * responsibility of any person or organization contemplating export to + * obtain such a license before exporting. + * + * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute + * this software and its documentation for any purpose and without fee is + * hereby granted, provided that the above copyright notice appear in all + * copies and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of M.I.T. not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. Furthermore if you + * modify this software you must label your software as modified software + * and not distribute it in such a fashion that it might be confused with + * the original MIT software. M.I.T. makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Individual source code files are copyright MIT, Cygnus Support, + * OpenVision, Oracle, Sun Soft, FundsXpress, and others. + * + * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira, + * and Zephyr are trademarks of the Massachusetts Institute of Technology + * (MIT). No commercial use of these trademarks may be made without prior + * written permission of MIT. + * + * "Commercial use" means use of a name in a product or other for-profit + * manner. It does NOT prevent a commercial firm from referring to the MIT + * trademarks in order to convey information (although in doing so, + * recognition of their trademark status should be given). + * $ + */ + +/* + * Verifiable, extensible message format. + * + * Format: + * + * + * + * + * + * + * + * + * + * ... + * + * + * If the header has variable length data it is included in the data blobs. + * The header field has the offset from the beginning of the message of the 1st + * byte of the data and the length of the data. + */ + +#include "CredentialsCache.h" +#include "msg.h" +#include "generic_lists.h" + +#include +#include +#include +#include + +/** + * cci_msg_new() + * + * Purpose: Allocate and initialize a new cc_msg_t structure + * + * Input parameter (type) in host order + * + * Return: non-NULL, the msg + * NULL, failure + * + * Errors: ccErrNoMem + * + */ +cc_int32 +cci_msg_new(cc_uint32 type, cc_msg_t** msgpp) +{ + // type should be validated. If invalid set error to ccErrBadParam + cc_msg_t* msg; + + if ( type > CC_MSG_MAX_TYPE || msgpp == NULL ) + return ccErrBadParam; + + msg = (cc_msg_t*)malloc(sizeof(cc_msg_t)); + if (msg == NULL) + return ccErrNoMem; + + msg->type = type; + msg->flat = NULL; + msg->header = NULL; + msg->flat_len = 0; + msg->header_len = 0; + msg->magic = 0; + cci_generic_list_new(&msg->data_blobs); + if (msg->data_blobs == NULL) { + // pass on error from previous call + free(msg); + return ccErrNoMem; + } + + *msgpp = msg; + return ccNoError; +} + +/** + * cci_msg_calc_header_size() + * + * Purpose: Calculates the size of the header + * + * Return: the size in bytes + * + * Errors: ccErrBadParam + * + */ +cc_int32 +cci_msg_calc_header_size(cc_msg_t* msg, cc_uint32 * lenp) +{ + int header_len = 12; /* header size, entire size, type */ + + if ( msg == NULL || lenp == NULL ) + return ccErrBadParam; + + header_len += msg->header_len; + *lenp = header_len; + return ccNoError; +} + +/** + * cci_msg_calc_size() + * + * Purpose: Calculates the size of the message + * (does not include the magic bytes) + * + * Return: the size in bytes + * + * Errors: ccErrBadParam + * + */ +cc_int32 +cci_msg_calc_size(cc_msg_t* msg, cc_uint32 * lenp) +{ + cc_uint32 flat_len; + cc_generic_list_node_t* gen_node; + cc_generic_iterate_t* gen_iterator; + cc_int32 code; + + if ( msg == NULL || lenp == NULL ) + return ccErrBadParam; + + code = cci_msg_calc_header_size(msg, &flat_len); + if (code != ccNoError) + goto bad; + + code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); + if ( code != ccNoError ) + goto bad; + + while (cci_generic_iterate_has_next(gen_iterator)) { + code = cci_generic_iterate_next(gen_iterator, &gen_node); + if (code != ccNoError) + break; + flat_len += gen_node->len + BLOB_LEN; + } + cci_generic_free_iterator(gen_iterator); + if (code != ccNoError) + goto bad; + + flat_len += MAGIC_HEAD_LEN + MAGIC_DATA_LEN; + *lenp = flat_len; + + bad: + return code; +} + +/** + * cci_msg_add_data_blob() + * + * Purpose: Adds 'len' bytes of data to the msg + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_add_data_blob(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint32 *lenp) +{ + cc_int32 code; + + if (msg == NULL || data == NULL || len <= 0 || lenp == NULL) + return ccErrBadParam; + + code = cci_generic_list_append(msg->data_blobs, data, len, NULL); + if ( code != ccNoError ) + return code; + return cci_msg_calc_blob_pos(msg, data, len, lenp); +} + +/** + * cc_msg_ + * + * Purpose: + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_calc_blob_pos(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint32 * posp) +{ + cc_uint32 pos; + cc_generic_list_node_t* gen_node; + cc_generic_iterate_t* gen_iterator; + cc_int32 code; + + code = cci_msg_calc_header_size(msg, &pos); + pos += sizeof(cc_uint32); /*+ sizeof(cc_uint32) for magic*/ + + code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); + while (cci_generic_iterate_has_next(gen_iterator)) { + code = cci_generic_iterate_next(gen_iterator, &gen_node); + if (gen_node->len != len && gen_node->data != data) { + pos += gen_node->len + sizeof(cc_uint32); + } else { + cci_generic_free_iterator(gen_iterator); + *posp = pos + sizeof(cc_uint32); + return ccNoError; + } + } + + cci_generic_free_iterator(gen_iterator); + return ccIteratorEnd; +} + +/** + * cc_msg_ + * + * Purpose: + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_add_header(cc_msg_t* msg, void *header, cc_uint32 header_len) +{ + if ( msg == NULL || header == NULL ) + return ccErrBadParam; + + msg->header = header; + msg->header_len = header_len; + return ccNoError; +} + + +/** + * cc_msg_ + * + * Purpose: + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_flatten(cc_msg_t* msg, void **flatpp) +{ + cc_generic_list_node_t* gen_node; + cc_generic_iterate_t* gen_iterator; + unsigned char *cur_pos; + cc_uint32 zero = 0; + cc_uint32 magic = 0; + cc_uint32 msg_len; + cc_uint32 u32; + cc_int32 code; + + if (msg == NULL) + return ccErrBadParam; + + code = cci_msg_calc_size(msg,&msg->flat_len); + if ( code != ccNoError ) + return code; + + if (msg->flat_len > CC_MSG_MAX_SIZE) + return ccErrBadParam; + + msg->flat = (void *)malloc(msg->flat_len); + if (msg->flat == NULL) + return ccErrNoMem; + + cur_pos = msg->flat; + + u32 = htonl(msg->header_len); + memcpy(cur_pos,&u32,sizeof(cc_uint32)); + cur_pos+=sizeof(cc_uint32); + + u32 = htonl(msg->flat_len); + memcpy(cur_pos,&u32,sizeof(cc_uint32)); + cur_pos+=sizeof(cc_uint32); + + u32 = htonl(msg->type); + memcpy(cur_pos,&u32,sizeof(cc_uint32)); + cur_pos+=sizeof(cc_uint32); + + /* header data is already in network order */ + memcpy(cur_pos, msg->header, msg->header_len); + cur_pos += msg->header_len; + + u32 = htonl(zero); + memcpy(cur_pos, &u32, sizeof(cc_uint32)); /*will be magic number later*/ + cur_pos += sizeof(cc_uint32); + + code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); + if ( code != ccNoError ) { + free(msg->flat); + return code; + } + + while (cci_generic_iterate_has_next(gen_iterator)) { + code = cci_generic_iterate_next(gen_iterator, &gen_node); + if (code != ccNoError) { + free(gen_iterator); + free(msg->flat); + return code; + } + u32 = htonl(gen_node->len); + memcpy(cur_pos, &u32, sizeof(cc_uint32)); + cur_pos+=sizeof(cc_uint32); + + /* data already in network order */ + memcpy(cur_pos, gen_node->data, gen_node->len); + cur_pos += gen_node->len; + } + free(gen_iterator); + + u32 = htonl(zero); + memcpy(cur_pos, &u32, sizeof(cc_uint32)); /*magic number will go here later*/ + cur_pos += sizeof(cc_uint32); + + if (cur_pos - (unsigned char *)msg->flat != msg->flat_len) { + fprintf(stderr, "ERROR cur_pos - msg->flat = %d\n",msg->flat_len); + } + + cci_msg_calc_magic(msg->flat, msg->flat_len, &magic); + printf("magic = %d\n",magic); + + cci_msg_calc_header_size(msg, &msg_len); + memcpy((char *)msg->flat + msg_len, &magic, sizeof(cc_uint32)); + memcpy((char *)msg->flat + msg->flat_len - sizeof(cc_uint32), &magic, sizeof(cc_uint32)); + + if ( flatpp != NULL ) + *flatpp = msg->flat; + + return ccNoError; +} + +/** + * cc_msg_ + * + * Purpose: + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_calc_magic(void *flat, cc_uint32 flat_len, cc_uint32 * magicp) +{ + cc_uint32 magic = 0; + cc_uint32 i; + + for (i = 0; i < flat_len; i += sizeof(cc_uint32)) { + magic = magic ^ *(int *)((char *)flat + i); + } + *magicp = htonl(magic); + return ccNoError; +} + +/** + * cc_msg_ + * + * Purpose: + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_verify(void *flat, cc_uint32 flat_len, cc_uint32 * validp) +{ + cc_uint32 *magic1, *magic2; + cc_uint32 *pheader_len; + cc_uint32 header_len; + cc_uint32 *ptotal_len; + cc_uint32 total_len; + cc_uint32 *pblob_len; + cc_uint32 blob_len; + cc_uint32 *ptype; + cc_uint32 type; + cc_uint32 num_blobs = 0; + cc_uint32 zero = 0; + cc_uint32 msg_magic, msg_magic2; + + if (flat == NULL || flat_len <= 0 || validp == NULL) + return ccErrBadParam; + + pheader_len = flat; + ptotal_len = (cc_uint32 *)((char *)pheader_len + sizeof(cc_uint32)); + ptype = (cc_uint32 *)((char *)ptotal_len + sizeof(cc_uint32)); + + header_len = ntohl(*pheader_len); + total_len = ntohl(*ptotal_len); + type = ntohl(*ptype); + + if (total_len != flat_len) { + *validp = 0; + return ccNoError; + } + + if (header_len > flat_len) { + /*too weak. We could verify header_len against type spec header.*/ + *validp = 0; + return ccNoError; + } + if (type > CC_MSG_MAX_TYPE) { + *validp = 0; + return ccNoError; + } + + magic1 = (cc_uint32 *)((char *)ptype + sizeof(cc_uint32) + header_len); + if ((char *)magic1 - (char *)flat == (flat_len - 8)) { + /*There are no data blobs*/ + magic2 = (cc_uint32 *)((char *)magic1 + sizeof(cc_uint32)); + num_blobs = 0; + } else { + pblob_len = (cc_uint32 *)((char *)magic1 + sizeof(cc_uint32)); + num_blobs = 1; + blob_len = ntohl(*pblob_len); + + while (blob_len + sizeof(cc_uint32) + ((char *)pblob_len - (char *)flat) < (flat_len - sizeof(cc_uint32))) { + pblob_len = (cc_uint32 *)((char *)pblob_len + blob_len + sizeof(cc_uint32)); + num_blobs++; + blob_len = ntohl(*pblob_len); + } + + if (blob_len + sizeof(cc_uint32) + ((char *)pblob_len - (char *)flat) != (flat_len - sizeof(cc_uint32))) { + /*blobs didn't line up*/ + *validp = 0; + return ccNoError; + } + magic2 = (cc_uint32 *)((char *)pblob_len + blob_len + sizeof(cc_uint32)); /*2nd magic should be directly after the last blob*/ + } + + if (*magic1 != *magic2) { + *validp = 0; + return ccNoError; + } + msg_magic = *magic1; + + printf("%d %d\n", (char *)magic1 - (char *)flat, (char *)magic2 - (char *)flat); + + memcpy(magic1, &zero, sizeof(cc_uint32)); + memcpy(magic2, &zero, sizeof(cc_uint32)); + cci_msg_calc_magic(flat, flat_len, &msg_magic2); + /* both msg_magic and msg_magic2 are in network order */ + if (msg_magic != msg_magic2) { + *validp = 0; + return ccNoError; + } + memcpy(magic1, &msg_magic, sizeof(cc_uint32)); + memcpy(magic2, &msg_magic, sizeof(cc_uint32)); + + *validp = 1; + return ccNoError; +} + +/** + * cc_msg_ + * + * Purpose: + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_unflatten(void *flat, cc_uint32 flat_len, cc_msg_t** msgpp) +{ + cc_msg_t* msg; + char *cur_pos; + cc_uint32 blob_len; + char *blob; + cc_uint32 valid; + cc_int32 code; + + if ( flat == NULL || flat_len <= 0 || msgpp == NULL ) + return ccErrBadParam; + + code = cci_msg_new(0, &msg); + if (code) + return code; + + cci_msg_verify(flat, flat_len, &valid); + if (valid != 1) { + cci_msg_destroy(msg); + return ccErrBadParam; + } + + cur_pos = flat; + msg->flat = flat; + + msg->header_len = ntohl(*(cc_uint32 *)cur_pos); + cur_pos += sizeof(cc_uint32); + + msg->flat_len = ntohl(*(cc_uint32 *)cur_pos); + cur_pos += sizeof(cc_uint32); + + msg->type = ntohl(*(cc_uint32 *)cur_pos); + cur_pos += sizeof(cc_uint32); + + msg->header = (void *)malloc(msg->header_len); + if (msg->header == NULL) { + cci_msg_destroy(msg); + return ccErrNoMem; + } + memcpy(msg->header, cur_pos, msg->header_len); + cur_pos += msg->header_len; + + msg->magic = ntohl(*(cc_uint32 *)cur_pos); + cur_pos += sizeof(cc_uint32); + + if (cur_pos - (char *)flat != flat_len - 8) { /*at least 1 blob*/ + blob_len = ntohl(*(cc_uint32 *)cur_pos); + while (blob_len + (cur_pos - (char *)flat) + sizeof(cc_uint32) <= flat_len - sizeof(cc_uint32)) { + blob = (void *)malloc(blob_len); + if (blob == NULL) { + cci_msg_destroy(msg); + return ccErrNoMem; + } + memcpy(blob, cur_pos + sizeof(cc_uint32), blob_len); + cci_generic_list_append(msg->data_blobs, blob, blob_len, NULL); + + cur_pos += sizeof(cc_uint32) + blob_len; + blob_len = ntohl(*(int *)cur_pos); + } + } + *msgpp = msg; + return ccNoError; +} + +cc_int32 +cci_msg_retrieve_blob(cc_msg_t* msg, cc_uint32 blob_offset, cc_uint32 blob_len, char **blobp) +{ + cc_generic_iterate_t* gen_iterator; + cc_generic_list_node_t* gen_node; + void *ret; + cc_uint32 blob_pos; + cc_int32 code; + + /*Ensure that the message has been unflattened*/ + if ( msg == NULL || msg->flat == NULL || blob_offset > msg->flat_len || + blob_len > msg->flat_len - blob_offset || blobp == NULL) + return ccErrBadParam; + + code = cci_generic_list_iterator(msg->data_blobs, &gen_iterator); + while (cci_generic_iterate_has_next(gen_iterator)) { + code = cci_generic_iterate_next(gen_iterator, &gen_node); + code = cci_msg_calc_blob_pos(msg, gen_node->data, gen_node->len, &blob_pos); + if (blob_pos == blob_offset && gen_node->len == blob_len) { + free(gen_iterator); + ret = (void *)malloc(blob_len); + if (ret == NULL) + return ccErrNoMem; + memcpy(ret,(char *)msg->flat + blob_offset, blob_len); + *blobp = ret; + return ccNoError; + } + } + free(gen_iterator); + return ccIteratorEnd; +} + +/** + * cc_msg_ + * + * Purpose: + * + * Return: + * + * Errors: + * + */ +cc_int32 +cci_msg_destroy(cc_msg_t* msg) +{ + if (msg->flat != NULL) + free(msg->flat); + if (msg->header != NULL) + free(msg->header); + cci_generic_list_destroy(msg->data_blobs); + free(msg); + return ccNoError; +} + diff --git a/src/lib/ccapi/include/CredentialsCache.h b/src/lib/ccapi/include/CredentialsCache.h index 95c4fe79ba..baad48fe7a 100644 --- a/src/lib/ccapi/include/CredentialsCache.h +++ b/src/lib/ccapi/include/CredentialsCache.h @@ -277,219 +277,211 @@ typedef struct cc_credentials_union cc_credentials_union; /* Exposed parts */ struct cc_context_d { - const cc_context_f* functions; + const cc_context_f *functions; #if TARGET_OS_MAC - const cc_context_f* otherFunctions; + const cc_context_f *otherFunctions; #endif }; typedef struct cc_context_d cc_context_d; -typedef cc_context_d* cc_context_t; +typedef cc_context_d *cc_context_t; struct cc_ccache_d { - const cc_ccache_f* functions; + const cc_ccache_f *functions; #if TARGET_OS_MAC - const cc_ccache_f* otherFunctions; + const cc_ccache_f *otherFunctions; #endif }; typedef struct cc_ccache_d cc_ccache_d; -typedef cc_ccache_d* cc_ccache_t; +typedef cc_ccache_d *cc_ccache_t; struct cc_ccache_iterator_d { - const cc_ccache_iterator_f* functions; + const cc_ccache_iterator_f *functions; #if TARGET_OS_MAC - const cc_ccache_iterator_f* otherFunctions; + const cc_ccache_iterator_f *otherFunctions; #endif }; typedef struct cc_ccache_iterator_d cc_ccache_iterator_d; -typedef cc_ccache_iterator_d* cc_ccache_iterator_t; +typedef cc_ccache_iterator_d *cc_ccache_iterator_t; struct cc_credentials_iterator_d { - const cc_credentials_iterator_f* functions; + const cc_credentials_iterator_f *functions; #if TARGET_OS_MAC - const cc_credentials_iterator_f* otherFunctions; + const cc_credentials_iterator_f *otherFunctions; #endif }; typedef struct cc_credentials_iterator_d cc_credentials_iterator_d; -typedef cc_credentials_iterator_d* cc_credentials_iterator_t; +typedef cc_credentials_iterator_d *cc_credentials_iterator_t; struct cc_string_d { - const char* data; - const cc_string_f* functions; + const char *data; + const cc_string_f *functions; #if TARGET_OS_MAC - const cc_string_f* otherFunctions; + const cc_string_f *otherFunctions; #endif }; typedef struct cc_string_d cc_string_d; -typedef cc_string_d* cc_string_t; +typedef cc_string_d *cc_string_t; struct cc_credentials_d { - const cc_credentials_union* data; - const cc_credentials_f* functions; + const cc_credentials_union *data; + const cc_credentials_f *functions; #if TARGET_OS_MAC - const cc_credentials_f* otherFunctions; + const cc_credentials_f *otherFunctions; #endif }; typedef struct cc_credentials_d cc_credentials_d; -typedef cc_credentials_d* cc_credentials_t; +typedef cc_credentials_d *cc_credentials_t; /* Function pointer structs */ struct cc_context_f { - cc_int32 (*release) ( - cc_context_t context); - cc_int32 (*get_change_time) ( - cc_context_t context, - cc_time* time); - cc_int32 (*get_default_ccache_name) ( - cc_context_t context, - cc_string_t* name); - cc_int32 (*open_ccache) ( - cc_context_t context, - const char* name, - cc_ccache_t* ccache); - cc_int32 (*open_default_ccache) ( - cc_context_t context, - cc_ccache_t* ccache); - cc_int32 (*create_ccache) ( - cc_context_t context, - const char* name, - cc_uint32 cred_vers, - const char* principal, - cc_ccache_t* ccache); - cc_int32 (*create_default_ccache) ( - cc_context_t context, - cc_uint32 cred_vers, - const char* principal, - cc_ccache_t* ccache); - cc_int32 (*create_new_ccache) ( - cc_context_t context, - cc_uint32 cred_vers, - const char* principal, - cc_ccache_t* ccache); - cc_int32 (*new_ccache_iterator) ( - cc_context_t context, - cc_ccache_iterator_t* iterator); - cc_int32 (*lock) ( - cc_context_t context, - cc_uint32 lock_type, - cc_uint32 block); - cc_int32 (*unlock) ( - cc_context_t context); - cc_int32 (*compare) ( - cc_context_t context, - cc_context_t compare_to, - cc_uint32* equal); + cc_int32 (*release) (cc_context_t in_context); + + cc_int32 (*get_change_time) (cc_context_t in_context, + cc_time *out_time); + + cc_int32 (*get_default_ccache_name) (cc_context_t in_context, + cc_string_t *out_name); + + cc_int32 (*open_ccache) (cc_context_t in_context, + const char *in_name, + cc_ccache_t *out_ccache); + + cc_int32 (*open_default_ccache) (cc_context_t in_context, + cc_ccache_t *out_ccache); + + cc_int32 (*create_ccache) (cc_context_t in_context, + const char *in_name, + cc_uint32 in_cred_vers, + const char *in_principal, + cc_ccache_t *out_ccache); + + cc_int32 (*create_default_ccache) (cc_context_t in_context, + cc_uint32 in_cred_vers, + const char *in_principal, + cc_ccache_t *out_ccache); + + cc_int32 (*create_new_ccache) (cc_context_t in_context, + cc_uint32 in_cred_vers, + const char *in_principal, + cc_ccache_t *out_ccache); + + cc_int32 (*new_ccache_iterator) (cc_context_t in_context, + cc_ccache_iterator_t *out_iterator); + + cc_int32 (*lock) (cc_context_t in_context, + cc_uint32 in_lock_type, + cc_uint32 in_block); + + cc_int32 (*unlock) (cc_context_t in_cc_context); + + cc_int32 (*compare) (cc_context_t in_cc_context, + cc_context_t in_compare_to_context, + cc_uint32 *out_equal); }; struct cc_ccache_f { - cc_int32 (*release) ( - cc_ccache_t ccache); - cc_int32 (*destroy) ( - cc_ccache_t ccache); - cc_int32 (*set_default) ( - cc_ccache_t ccache); - cc_int32 (*get_credentials_version) ( - cc_ccache_t ccache, - cc_uint32* credentials_version); - cc_int32 (*get_name) ( - cc_ccache_t ccache, - cc_string_t* name); - cc_int32 (*get_principal) ( - cc_ccache_t ccache, - cc_uint32 credentials_version, - cc_string_t* principal); - cc_int32 (*set_principal) ( - cc_ccache_t ccache, - cc_uint32 credentials_version, - const char* principal); - cc_int32 (*store_credentials) ( - cc_ccache_t ccache, - const cc_credentials_union* credentials); - cc_int32 (*remove_credentials) ( - cc_ccache_t ccache, - cc_credentials_t credentials); - cc_int32 (*new_credentials_iterator) ( - cc_ccache_t ccache, - cc_credentials_iterator_t* iterator); - cc_int32 (*move) ( - cc_ccache_t source, - cc_ccache_t destination); - cc_int32 (*lock) ( - cc_ccache_t ccache, - cc_uint32 lock_type, - cc_uint32 block); - cc_int32 (*unlock) ( - cc_ccache_t ccache); - cc_int32 (*get_last_default_time) ( - cc_ccache_t ccache, - cc_time* time); - cc_int32 (*get_change_time) ( - cc_ccache_t ccache, - cc_time* time); - cc_int32 (*compare) ( - cc_ccache_t ccache, - cc_ccache_t compare_to, - cc_uint32* equal); - cc_int32 (*get_kdc_time_offset) ( - cc_ccache_t ccache, - cc_int32 credentials_version, - cc_time* time_offset); - cc_int32 (*set_kdc_time_offset) ( - cc_ccache_t ccache, - cc_int32 credentials_version, - cc_time time_offset); - - cc_int32 (*clear_kdc_time_offset) ( - cc_ccache_t ccache, - cc_int32 credentials_version); + cc_int32 (*release) (cc_ccache_t io_ccache); + + cc_int32 (*destroy) (cc_ccache_t io_ccache); + + cc_int32 (*set_default) (cc_ccache_t io_ccache); + + cc_int32 (*get_credentials_version) (cc_ccache_t in_ccache, + cc_uint32 *in_credentials_version); + + cc_int32 (*get_name) (cc_ccache_t in_ccache, + cc_string_t *out_name); + + cc_int32 (*get_principal) (cc_ccache_t in_ccache, + cc_uint32 in_credentials_version, + cc_string_t *out_principal); + + cc_int32 (*set_principal) (cc_ccache_t io_ccache, + cc_uint32 in_credentials_version, + const char *in_principal); + + cc_int32 (*store_credentials) (cc_ccache_t io_ccache, + const cc_credentials_union *in_credentials_union); + + cc_int32 (*remove_credentials) (cc_ccache_t io_ccache, + cc_credentials_t in_credentials); + + cc_int32 (*new_credentials_iterator) (cc_ccache_t in_ccache, + cc_credentials_iterator_t *out_credentials_iterator); + + cc_int32 (*move) (cc_ccache_t io_source_ccache, + cc_ccache_t io_destination_ccache); + + cc_int32 (*lock) (cc_ccache_t io_ccache, + cc_uint32 in_lock_type, + cc_uint32 in_block); + + cc_int32 (*unlock) (cc_ccache_t io_ccache); + + cc_int32 (*get_last_default_time) (cc_ccache_t in_ccache, + cc_time *out_last_default_time); + + cc_int32 (*get_change_time) (cc_ccache_t in_ccache, + cc_time *out_change_time); + + cc_int32 (*compare) (cc_ccache_t in_ccache, + cc_ccache_t in_compare_to_ccache, + cc_uint32 *out_equal); + + cc_int32 (*get_kdc_time_offset) (cc_ccache_t in_ccache, + cc_int32 in_credentials_version, + cc_time *out_time_offset); + + cc_int32 (*set_kdc_time_offset) (cc_ccache_t io_ccache, + cc_int32 in_credentials_version, + cc_time in_time_offset); + + cc_int32 (*clear_kdc_time_offset) (cc_ccache_t in_ccache, + cc_int32 in_credentials_version); }; struct cc_string_f { - cc_int32 (*release) ( - cc_string_t string); + cc_int32 (*release) (cc_string_t in_string); }; struct cc_credentials_f { - cc_int32 (*release) ( - cc_credentials_t credentials); - cc_int32 (*compare) ( - cc_credentials_t credentials, - cc_credentials_t compare_to, - cc_uint32* equal); + cc_int32 (*release) (cc_credentials_t io_credentials); + + cc_int32 (*compare) (cc_credentials_t in_credentials, + cc_credentials_t in_compare_to_credentials, + cc_uint32 *out_equal); }; - + struct cc_ccache_iterator_f { - cc_int32 (*release) ( - cc_ccache_iterator_t iter); - cc_int32 (*next) ( - cc_ccache_iterator_t iter, - cc_ccache_t* ccache); - - cc_int32 (*clone) ( cc_ccache_iterator_t iter, - cc_ccache_iterator_t* new_iter); + cc_int32 (*release) (cc_ccache_iterator_t io_ccache_iterator); + + cc_int32 (*next) (cc_ccache_iterator_t in_ccache_iterator, + cc_ccache_t *out_ccache); + + cc_int32 (*clone) (cc_ccache_iterator_t in_ccache_iterator, + cc_ccache_iterator_t *out_ccache_iterator); }; struct cc_credentials_iterator_f { - cc_int32 (*release) ( - cc_credentials_iterator_t iter); - cc_int32 (*next) ( - cc_credentials_iterator_t iter, - cc_credentials_t* cred); - - cc_int32 (*clone) ( cc_credentials_iterator_t iter, - cc_credentials_iterator_t* new_iter); + cc_int32 (*release) (cc_credentials_iterator_t io_credentials_iterator); + + cc_int32 (*next) (cc_credentials_iterator_t in_credentials_iterator, + cc_credentials_t *out_credentials); + + cc_int32 (*clone) (cc_credentials_iterator_t in_credentials_iterator, + cc_credentials_iterator_t *out_credentials_iterator); }; /* * API functions */ - -CCACHE_API cc_int32 cc_initialize ( - cc_context_t* outContext, - cc_int32 inVersion, - cc_int32* outSupportedVersion, - char const** outVendor); + +CCACHE_API cc_int32 cc_initialize (cc_context_t *out_context, + cc_int32 in_version, + cc_int32 *out_supported_version, + char const **out_vendor); /* * Convenience macros diff --git a/src/lib/ccapi/include/CredentialsCache2.h b/src/lib/ccapi/include/CredentialsCache2.h index 5505bf29fe..b7366273dd 100644 --- a/src/lib/ccapi/include/CredentialsCache2.h +++ b/src/lib/ccapi/include/CredentialsCache2.h @@ -307,4 +307,4 @@ CCACHE_API cc_int32 cc_lock_request( } #endif /* __cplusplus */ -#endif /* __CREDENTIALSCACHE2__ */ \ No newline at end of file +#endif /* __CREDENTIALSCACHE2__ */ diff --git a/src/lib/ccapi/include/generic_lists.h b/src/lib/ccapi/include/generic_lists.h index 14b7ae28c3..93636da388 100644 --- a/src/lib/ccapi/include/generic_lists.h +++ b/src/lib/ccapi/include/generic_lists.h @@ -50,10 +50,10 @@ #define __CC_GENERIC_LISTS_H_ enum cc_list_type { - generic = 0, - context, - cache, - credentials + cc_generic_list = 0, + cc_context_list, + cc_cache_list, + cc_credentials_list }; struct cc_generic_list_node_t { diff --git a/src/lib/ccapi/include/msg.h b/src/lib/ccapi/include/msg.h index 79b9a7f72e..1682811c01 100644 --- a/src/lib/ccapi/include/msg.h +++ b/src/lib/ccapi/include/msg.h @@ -68,6 +68,11 @@ #include "CredentialsCache.h" #include "generic_lists.h" +#if TARGET_OS_MAC +#define htonll(x) OSSwapHostToBigInt64(x) +#define ntohll(x) OSSwapBigToHostInt64(x) +#endif + struct cc_msg_t { cc_uint32 type; /*type of message*/ cc_uint8 *flat; /*flattened representation of this message*/ @@ -136,9 +141,9 @@ cc_int32 cci_msg_add_data_blob(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint cc_int32 cci_msg_add_header(cc_msg_t* msg, void *header, cc_uint32 header_len); cc_int32 cci_msg_calc_blob_pos(cc_msg_t* msg, void *data, cc_uint32 len, cc_uint32 * sizep); cc_int32 cci_msg_flatten(cc_msg_t* msg, void **); -cc_int32 cci_msg_calc_magic(void *flat, int flat_len, cc_uint32 * sizep); -cc_int32 cci_msg_verify(void* flat, int flat_len, cc_uint32 * sizep); -cc_int32 cci_msg_unflatten(void *flat, int flat_len, cc_msg_t** msgpp); +cc_int32 cci_msg_calc_magic(void *flat, cc_uint32 flat_len, cc_uint32 * sizep); +cc_int32 cci_msg_verify(void* flat, cc_uint32 flat_len, cc_uint32 * sizep); +cc_int32 cci_msg_unflatten(void *flat, cc_uint32 flat_len, cc_msg_t** msgpp); cc_int32 cci_msg_retrieve_blob(cc_msg_t* msg, cc_uint32 blob_offset, cc_uint32 blob_len, char **); cc_int32 cci_msg_destroy(cc_msg_t* msg); diff --git a/src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.pbxuser b/src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.pbxuser deleted file mode 100644 index ea15e540b0..0000000000 --- a/src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.pbxuser +++ /dev/null @@ -1,2005 +0,0 @@ -// !$*UTF8*$! -{ - 08FB7793FE84155DC02AAC07 /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = A1E70D5E0A38B796007BE3E3 /* CCacheServer */; - activeTarget = A1E70D5C0A38B796007BE3E3 /* CCacheServer */; - addToTargets = ( - ); - breakpoints = ( - ); - breakpointsGroup = A1E70D500A38B5F3007BE3E3 /* XCBreakpointsBucket */; - codeSenseManager = A1E70CFE0A38B536007BE3E3 /* Code sense */; - executables = ( - A1E70D5E0A38B796007BE3E3 /* CCacheServer */, - ); - perUserDictionary = { - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 811, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 200, - 608, - 20, - 48, - 43, - 43, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXTargetDataSource_PrimaryAttribute, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 171582174; - PBXWorkspaceStateSaveDate = 171582174; - }; - perUserProjectItems = { - A1E70DF70A38C765007BE3E3 /* PBXTextBookmark */ = A1E70DF70A38C765007BE3E3 /* PBXTextBookmark */; - A1E70DF80A38C765007BE3E3 /* PBXTextBookmark */ = A1E70DF80A38C765007BE3E3 /* PBXTextBookmark */; - A1E70DF90A38C765007BE3E3 /* PBXTextBookmark */ = A1E70DF90A38C765007BE3E3 /* PBXTextBookmark */; - A1E70DFA0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70DFA0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70DFB0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70DFB0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70DFD0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70DFD0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E010A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E010A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E020A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E020A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E060A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E060A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E090A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E090A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E0A0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E0A0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E0B0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E0B0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E0C0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E0C0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E100A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E100A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E110A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E110A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E120A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E120A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E130A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E130A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E140A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E140A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E150A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E150A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E160A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E160A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E170A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E170A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E180A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E180A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E1B0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E1B0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E1E0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E1E0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E1F0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E1F0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E200A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E200A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E250A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E250A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E260A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E260A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E290A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E290A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E2A0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E2A0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E2B0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E2B0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E2D0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E2D0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E2E0A38C765007BE3E3 /* PBXTextBookmark */ = A1E70E2E0A38C765007BE3E3 /* PBXTextBookmark */; - A1E70E380A38C778007BE3E3 /* PBXTextBookmark */ = A1E70E380A38C778007BE3E3 /* PBXTextBookmark */; - A1E70E3D0A38C78C007BE3E3 /* PBXTextBookmark */ = A1E70E3D0A38C78C007BE3E3 /* PBXTextBookmark */; - A1E70E410A38C78C007BE3E3 /* PBXTextBookmark */ = A1E70E410A38C78C007BE3E3 /* PBXTextBookmark */; - A1E70E430A38C791007BE3E3 /* PBXTextBookmark */ = A1E70E430A38C791007BE3E3 /* PBXTextBookmark */; - A1E70E450A38C791007BE3E3 /* PBXTextBookmark */ = A1E70E450A38C791007BE3E3 /* PBXTextBookmark */; - A1E70E4A0A38C7BE007BE3E3 /* PBXTextBookmark */ = A1E70E4A0A38C7BE007BE3E3 /* PBXTextBookmark */; - A1E70E520A38C9FD007BE3E3 /* PBXTextBookmark */ = A1E70E520A38C9FD007BE3E3 /* PBXTextBookmark */; - A1E70E530A38C9FD007BE3E3 /* PBXTextBookmark */ = A1E70E530A38C9FD007BE3E3 /* PBXTextBookmark */; - A1E70E560A38C9FD007BE3E3 /* PBXTextBookmark */ = A1E70E560A38C9FD007BE3E3 /* PBXTextBookmark */; - A1E70E580A38C9FD007BE3E3 /* PBXTextBookmark */ = A1E70E580A38C9FD007BE3E3 /* PBXTextBookmark */; - A1E70E6F0A38CA08007BE3E3 /* PBXTextBookmark */ = A1E70E6F0A38CA08007BE3E3 /* PBXTextBookmark */; - A1E70E770A38CA55007BE3E3 /* PBXTextBookmark */ = A1E70E770A38CA55007BE3E3 /* PBXTextBookmark */; - A1E70E7D0A38CA55007BE3E3 /* PBXTextBookmark */ = A1E70E7D0A38CA55007BE3E3 /* PBXTextBookmark */; - A1E70E9C0A38CAF1007BE3E3 /* PBXTextBookmark */ = A1E70E9C0A38CAF1007BE3E3 /* PBXTextBookmark */; - A1E70EA80A38CB24007BE3E3 /* PBXTextBookmark */ = A1E70EA80A38CB24007BE3E3 /* PBXTextBookmark */; - A1E70EAB0A38CB24007BE3E3 /* PBXTextBookmark */ = A1E70EAB0A38CB24007BE3E3 /* PBXTextBookmark */; - A1E70EB50A38CB4D007BE3E3 /* PBXTextBookmark */ = A1E70EB50A38CB4D007BE3E3 /* PBXTextBookmark */; - A1E70EC30A38CC14007BE3E3 /* PBXTextBookmark */ = A1E70EC30A38CC14007BE3E3 /* PBXTextBookmark */; - A1E70ECB0A38CC4C007BE3E3 /* PBXTextBookmark */ = A1E70ECB0A38CC4C007BE3E3 /* PBXTextBookmark */; - A1E70ED70A38CCB6007BE3E3 /* PBXTextBookmark */ = A1E70ED70A38CCB6007BE3E3 /* PBXTextBookmark */; - A1E70EE20A38CCD6007BE3E3 /* PBXTextBookmark */ = A1E70EE20A38CCD6007BE3E3 /* PBXTextBookmark */; - A1E70EFE0A38CD66007BE3E3 /* PBXTextBookmark */ = A1E70EFE0A38CD66007BE3E3 /* PBXTextBookmark */; - A1E70F0F0A38CE21007BE3E3 /* PBXTextBookmark */ = A1E70F0F0A38CE21007BE3E3 /* PBXTextBookmark */; - A1E70F440A38D252007BE3E3 /* PBXTextBookmark */ = A1E70F440A38D252007BE3E3 /* PBXTextBookmark */; - A1E70F450A38D252007BE3E3 /* PBXTextBookmark */ = A1E70F450A38D252007BE3E3 /* PBXTextBookmark */; - A1E70F8B0A38D3B4007BE3E3 /* PBXTextBookmark */ = A1E70F8B0A38D3B4007BE3E3 /* PBXTextBookmark */; - A1E70F9C0A38D41E007BE3E3 /* PBXTextBookmark */ = A1E70F9C0A38D41E007BE3E3 /* PBXTextBookmark */; - A1E70F9D0A38D41E007BE3E3 /* PBXTextBookmark */ = A1E70F9D0A38D41E007BE3E3 /* PBXTextBookmark */; - A1E70FC60A38D560007BE3E3 /* PBXTextBookmark */ = A1E70FC60A38D560007BE3E3 /* PBXTextBookmark */; - A1E70FC80A38D560007BE3E3 /* PBXTextBookmark */ = A1E70FC80A38D560007BE3E3 /* PBXTextBookmark */; - A1E70FC90A38D560007BE3E3 /* PBXTextBookmark */ = A1E70FC90A38D560007BE3E3 /* PBXTextBookmark */; - A1E70FCA0A38D560007BE3E3 /* PBXTextBookmark */ = A1E70FCA0A38D560007BE3E3 /* PBXTextBookmark */; - A1E70FCD0A38D560007BE3E3 /* PBXTextBookmark */ = A1E70FCD0A38D560007BE3E3 /* PBXTextBookmark */; - A1E70FD80A38D573007BE3E3 /* PBXTextBookmark */ = A1E70FD80A38D573007BE3E3 /* PBXTextBookmark */; - A1E70FEE0A38D7C0007BE3E3 /* PBXTextBookmark */ = A1E70FEE0A38D7C0007BE3E3 /* PBXTextBookmark */; - A1E70FEF0A38D7C0007BE3E3 /* PBXTextBookmark */ = A1E70FEF0A38D7C0007BE3E3 /* PBXTextBookmark */; - A1E70FF00A38D7C0007BE3E3 /* PBXTextBookmark */ = A1E70FF00A38D7C0007BE3E3 /* PBXTextBookmark */; - A1E70FFA0A38D806007BE3E3 /* PBXTextBookmark */ = A1E70FFA0A38D806007BE3E3 /* PBXTextBookmark */; - A1E70FFC0A38D806007BE3E3 /* PBXTextBookmark */ = A1E70FFC0A38D806007BE3E3 /* PBXTextBookmark */; - A1E70FFF0A38D806007BE3E3 /* PBXTextBookmark */ = A1E70FFF0A38D806007BE3E3 /* PBXTextBookmark */; - A1E710010A38D814007BE3E3 /* PBXTextBookmark */ = A1E710010A38D814007BE3E3 /* PBXTextBookmark */; - A1E7100A0A38D888007BE3E3 /* PBXTextBookmark */ = A1E7100A0A38D888007BE3E3 /* PBXTextBookmark */; - A1E7100C0A38D888007BE3E3 /* PBXTextBookmark */ = A1E7100C0A38D888007BE3E3 /* PBXTextBookmark */; - A1E7100D0A38D888007BE3E3 /* PBXTextBookmark */ = A1E7100D0A38D888007BE3E3 /* PBXTextBookmark */; - A1E710110A38D888007BE3E3 /* PBXTextBookmark */ = A1E710110A38D888007BE3E3 /* PBXTextBookmark */; - A1E710140A38D888007BE3E3 /* PBXTextBookmark */ = A1E710140A38D888007BE3E3 /* PBXTextBookmark */; - A1E7103C0A38DE0B007BE3E3 /* PBXTextBookmark */ = A1E7103C0A38DE0B007BE3E3 /* PBXTextBookmark */; - A1E710400A38DE0B007BE3E3 /* PBXTextBookmark */ = A1E710400A38DE0B007BE3E3 /* PBXTextBookmark */; - A1E710530A39EC0B007BE3E3 /* PBXTextBookmark */ = A1E710530A39EC0B007BE3E3 /* PBXTextBookmark */; - A1E7105A0A39ED89007BE3E3 /* PBXTextBookmark */ = A1E7105A0A39ED89007BE3E3 /* PBXTextBookmark */; - A1E7105D0A39ED89007BE3E3 /* PBXTextBookmark */ = A1E7105D0A39ED89007BE3E3 /* PBXTextBookmark */; - A1E7105E0A39ED89007BE3E3 /* PBXTextBookmark */ = A1E7105E0A39ED89007BE3E3 /* PBXTextBookmark */; - A1E710680A39F102007BE3E3 /* PBXTextBookmark */ = A1E710680A39F102007BE3E3 /* PBXTextBookmark */; - A1E710840A3A1CFB007BE3E3 /* PBXTextBookmark */ = A1E710840A3A1CFB007BE3E3 /* PBXTextBookmark */; - A1E710860A3A1CFB007BE3E3 /* PBXTextBookmark */ = A1E710860A3A1CFB007BE3E3 /* PBXTextBookmark */; - A1E710870A3A1CFB007BE3E3 /* PBXTextBookmark */ = A1E710870A3A1CFB007BE3E3 /* PBXTextBookmark */; - A1E710890A3A1D04007BE3E3 /* PBXTextBookmark */ = A1E710890A3A1D04007BE3E3 /* PBXTextBookmark */; - A1E7108B0A3A1D04007BE3E3 /* PBXTextBookmark */ = A1E7108B0A3A1D04007BE3E3 /* PBXTextBookmark */; - A1E7108D0A3A1D06007BE3E3 /* PBXTextBookmark */ = A1E7108D0A3A1D06007BE3E3 /* PBXTextBookmark */; - A1E710930A3A1D22007BE3E3 /* PBXTextBookmark */ = A1E710930A3A1D22007BE3E3 /* PBXTextBookmark */; - A1E710940A3A1D22007BE3E3 /* PBXTextBookmark */ = A1E710940A3A1D22007BE3E3 /* PBXTextBookmark */; - A1E710950A3A1D22007BE3E3 /* PBXTextBookmark */ = A1E710950A3A1D22007BE3E3 /* PBXTextBookmark */; - A1E710960A3A1D22007BE3E3 /* PBXTextBookmark */ = A1E710960A3A1D22007BE3E3 /* PBXTextBookmark */; - A1E710970A3A1D22007BE3E3 /* PBXTextBookmark */ = A1E710970A3A1D22007BE3E3 /* PBXTextBookmark */; - A1E7109C0A3A1D2B007BE3E3 /* PBXTextBookmark */ = A1E7109C0A3A1D2B007BE3E3 /* PBXTextBookmark */; - A1E7109D0A3A1D2B007BE3E3 /* PBXTextBookmark */ = A1E7109D0A3A1D2B007BE3E3 /* PBXTextBookmark */; - A1E7109F0A3A1DD0007BE3E3 /* PBXTextBookmark */ = A1E7109F0A3A1DD0007BE3E3 /* PBXTextBookmark */; - A1E710A00A3A1DD0007BE3E3 /* PBXTextBookmark */ = A1E710A00A3A1DD0007BE3E3 /* PBXTextBookmark */; - A1E710A50A3A22E1007BE3E3 /* PBXTextBookmark */ = A1E710A50A3A22E1007BE3E3 /* PBXTextBookmark */; - A1E710AB0A3A22F5007BE3E3 /* PBXTextBookmark */ = A1E710AB0A3A22F5007BE3E3 /* PBXTextBookmark */; - A1E710AC0A3A22F5007BE3E3 /* PBXTextBookmark */ = A1E710AC0A3A22F5007BE3E3 /* PBXTextBookmark */; - A1E710AD0A3A22F5007BE3E3 /* PBXTextBookmark */ = A1E710AD0A3A22F5007BE3E3 /* PBXTextBookmark */; - A1E710AF0A3A22FE007BE3E3 /* PBXTextBookmark */ = A1E710AF0A3A22FE007BE3E3 /* PBXTextBookmark */; - A1E710B30A3A22FF007BE3E3 /* PBXTextBookmark */ = A1E710B30A3A22FF007BE3E3 /* PBXTextBookmark */; - A1E710B90A3A23FB007BE3E3 /* PBXTextBookmark */ = A1E710B90A3A23FB007BE3E3 /* PBXTextBookmark */; - A1E710BC0A3A2415007BE3E3 /* PBXTextBookmark */ = A1E710BC0A3A2415007BE3E3 /* PBXTextBookmark */; - A1E710BD0A3A2415007BE3E3 /* PBXTextBookmark */ = A1E710BD0A3A2415007BE3E3 /* PBXTextBookmark */; - A1E710BE0A3A2415007BE3E3 /* PBXTextBookmark */ = A1E710BE0A3A2415007BE3E3 /* PBXTextBookmark */; - A1E710BF0A3A2415007BE3E3 /* PBXTextBookmark */ = A1E710BF0A3A2415007BE3E3 /* PBXTextBookmark */; - A1E710C00A3A2415007BE3E3 /* PBXTextBookmark */ = A1E710C00A3A2415007BE3E3 /* PBXTextBookmark */; - A1E710C60A3A2441007BE3E3 /* PBXTextBookmark */ = A1E710C60A3A2441007BE3E3 /* PBXTextBookmark */; - A1E710C70A3A2441007BE3E3 /* PBXTextBookmark */ = A1E710C70A3A2441007BE3E3 /* PBXTextBookmark */; - A1E710C80A3A2441007BE3E3 /* PBXTextBookmark */ = A1E710C80A3A2441007BE3E3 /* PBXTextBookmark */; - A1E710C90A3A2441007BE3E3 /* PBXTextBookmark */ = A1E710C90A3A2441007BE3E3 /* PBXTextBookmark */; - A1E710CA0A3A244D007BE3E3 /* PBXTextBookmark */ = A1E710CA0A3A244D007BE3E3 /* PBXTextBookmark */; - A1E710CB0A3A244D007BE3E3 /* PBXTextBookmark */ = A1E710CB0A3A244D007BE3E3 /* PBXTextBookmark */; - A1E710CC0A3A244D007BE3E3 /* PBXTextBookmark */ = A1E710CC0A3A244D007BE3E3 /* PBXTextBookmark */; - A1E710CD0A3A244D007BE3E3 /* PBXTextBookmark */ = A1E710CD0A3A244D007BE3E3 /* PBXTextBookmark */; - A1E710CE0A3A244D007BE3E3 /* PBXTextBookmark */ = A1E710CE0A3A244D007BE3E3 /* PBXTextBookmark */; - A1E710D00A3A2456007BE3E3 /* PBXTextBookmark */ = A1E710D00A3A2456007BE3E3 /* PBXTextBookmark */; - A1E710D10A3A2456007BE3E3 /* PBXTextBookmark */ = A1E710D10A3A2456007BE3E3 /* PBXTextBookmark */; - A1E710D20A3A2456007BE3E3 /* PBXTextBookmark */ = A1E710D20A3A2456007BE3E3 /* PBXTextBookmark */; - A1E710D30A3A2456007BE3E3 /* PBXTextBookmark */ = A1E710D30A3A2456007BE3E3 /* PBXTextBookmark */; - A1E710D40A3A2456007BE3E3 /* PBXTextBookmark */ = A1E710D40A3A2456007BE3E3 /* PBXTextBookmark */; - A1E710D70A3A2465007BE3E3 /* PBXTextBookmark */ = A1E710D70A3A2465007BE3E3 /* PBXTextBookmark */; - A1E710D80A3A2465007BE3E3 /* PBXTextBookmark */ = A1E710D80A3A2465007BE3E3 /* PBXTextBookmark */; - A1E710D90A3A2465007BE3E3 /* PBXTextBookmark */ = A1E710D90A3A2465007BE3E3 /* PBXTextBookmark */; - A1E710DB0A3A246E007BE3E3 /* PBXTextBookmark */ = A1E710DB0A3A246E007BE3E3 /* PBXTextBookmark */; - A1E710DF0A3A247D007BE3E3 /* PBXTextBookmark */ = A1E710DF0A3A247D007BE3E3 /* PBXTextBookmark */; - A1E710E00A3A247D007BE3E3 /* PBXTextBookmark */ = A1E710E00A3A247D007BE3E3 /* PBXTextBookmark */; - A1E710E10A3A247D007BE3E3 /* PBXTextBookmark */ = A1E710E10A3A247D007BE3E3 /* PBXTextBookmark */; - A1E710E20A3A247D007BE3E3 /* PBXTextBookmark */ = A1E710E20A3A247D007BE3E3 /* PBXTextBookmark */; - A1E710E30A3A247D007BE3E3 /* PBXTextBookmark */ = A1E710E30A3A247D007BE3E3 /* PBXTextBookmark */; - A1E710E50A3A248A007BE3E3 /* PBXTextBookmark */ = A1E710E50A3A248A007BE3E3 /* PBXTextBookmark */; - A1E710E60A3A248A007BE3E3 /* PBXTextBookmark */ = A1E710E60A3A248A007BE3E3 /* PBXTextBookmark */; - A1E710E70A3A24A4007BE3E3 /* PBXTextBookmark */ = A1E710E70A3A24A4007BE3E3 /* PBXTextBookmark */; - A1E710E80A3A24A5007BE3E3 /* PBXTextBookmark */ = A1E710E80A3A24A5007BE3E3 /* PBXTextBookmark */; - A1E710E90A3A24A5007BE3E3 /* PBXTextBookmark */ = A1E710E90A3A24A5007BE3E3 /* PBXTextBookmark */; - A1E710EA0A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710EA0A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710EB0A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710EB0A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710EC0A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710EC0A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710ED0A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710ED0A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710EE0A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710EE0A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710EF0A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710EF0A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710F00A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710F00A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710F10A3A2521007BE3E3 /* PBXTextBookmark */ = A1E710F10A3A2521007BE3E3 /* PBXTextBookmark */; - A1E710F40A3A253F007BE3E3 /* PBXTextBookmark */ = A1E710F40A3A253F007BE3E3 /* PBXTextBookmark */; - A1E710F50A3A253F007BE3E3 /* PBXTextBookmark */ = A1E710F50A3A253F007BE3E3 /* PBXTextBookmark */; - }; - sourceControlManager = A1E70CFD0A38B536007BE3E3 /* Source Control */; - userBuildSettings = { - }; - }; - A1E70CFD0A38B536007BE3E3 /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - }; - scmType = ""; - }; - A1E70CFE0A38B536007BE3E3 /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - A1E70D000A38B5BB007BE3E3 /* cacheapi.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1087, 2100}}"; - sepNavSelRange = "{4787, 139}"; - sepNavVisRect = "{{0, 1547}, {1087, 448}}"; - }; - }; - A1E70D010A38B5BB007BE3E3 /* ccache.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1003, 18424}}"; - sepNavSelRange = "{11919, 0}"; - sepNavVisRect = "{{0, 5185}, {1003, 481}}"; - }; - }; - A1E70D020A38B5BB007BE3E3 /* ccache.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {980, 2058}}"; - sepNavSelRange = "{2339, 9}"; - sepNavVisRect = "{{0, 556}, {980, 387}}"; - }; - }; - A1E70D080A38B5BB007BE3E3 /* context.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {980, 13958}}"; - sepNavSelRange = "{29891, 21}"; - sepNavVisRect = "{{0, 13156}, {980, 387}}"; - }; - }; - A1E70D0B0A38B5BB007BE3E3 /* credentials.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 1330}}"; - sepNavSelRange = "{0, 2110}"; - sepNavVisRect = "{{0, 235}, {621, 499}}"; - }; - }; - A1E70D0C0A38B5BB007BE3E3 /* credentials_iterator.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {980, 3836}}"; - sepNavSelRange = "{6723, 21}"; - sepNavVisRect = "{{0, 2544}, {980, 387}}"; - }; - }; - A1E70D0F0A38B5BB007BE3E3 /* NTMakefile */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {734, 998}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {734, 998}}"; - sepNavWindowFrame = "{{15, 46}, {779, 1127}}"; - }; - }; - A1E70D120A38B5BB007BE3E3 /* generic_lists.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1003, 5572}}"; - sepNavSelRange = "{2282, 0}"; - sepNavVisRect = "{{0, 489}, {1003, 521}}"; - }; - }; - A1E70D130A38B5BB007BE3E3 /* marshall.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {980, 6188}}"; - sepNavSelRange = "{11995, 68}"; - sepNavVisRect = "{{0, 4756}, {980, 387}}"; - }; - }; - A1E70D140A38B5BB007BE3E3 /* msg.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1087, 8722}}"; - sepNavSelRange = "{15262, 21}"; - sepNavVisRect = "{{0, 7868}, {1087, 448}}"; - }; - }; - A1E70D150A38B5BB007BE3E3 /* NTMakefile */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 499}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {621, 499}}"; - }; - }; - A1E70D190A38B5BB007BE3E3 /* cc_rpc.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {888, 742}}"; - sepNavSelRange = "{2202, 18}"; - sepNavVisRect = "{{0, 453}, {888, 289}}"; - }; - }; - A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1003, 8302}}"; - sepNavSelRange = "{2631, 0}"; - sepNavVisRect = "{{0, 958}, {1003, 521}}"; - }; - }; - A1E70D1B0A38B5BB007BE3E3 /* CredentialsCache2.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1003, 4340}}"; - sepNavSelRange = "{7813, 0}"; - sepNavVisRect = "{{0, 422}, {1003, 521}}"; - }; - }; - A1E70D1C0A38B5BB007BE3E3 /* datastore.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {888, 2562}}"; - sepNavSelRange = "{2301, 0}"; - sepNavVisRect = "{{0, 573}, {888, 436}}"; - }; - }; - A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1003, 1442}}"; - sepNavSelRange = "{2369, 0}"; - sepNavVisRect = "{{0, 545}, {1003, 521}}"; - }; - }; - A1E70D1F0A38B5BB007BE3E3 /* msg.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1003, 2268}}"; - sepNavSelRange = "{5529, 0}"; - sepNavVisRect = "{{0, 1721}, {1003, 521}}"; - }; - }; - A1E70D260A38B5BB007BE3E3 /* NTMakefile */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 499}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {621, 499}}"; - }; - }; - A1E70D280A38B5BB007BE3E3 /* ccs_ccache.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1003, 9856}}"; - sepNavSelRange = "{9783, 0}"; - sepNavVisRect = "{{0, 3674}, {1003, 730}}"; - }; - }; - A1E70D2C0A38B5BB007BE3E3 /* main.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 910}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 134}, {621, 727}}"; - }; - }; - A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1087, 22204}}"; - sepNavSelRange = "{36879, 21}"; - sepNavVisRect = "{{0, 14168}, {1087, 448}}"; - }; - }; - A1E70D3B0A38B5BB007BE3E3 /* client.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {804, 1988}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {804, 503}}"; - }; - }; - A1E70D460A38B5BC007BE3E3 /* server.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 9520}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {621, 499}}"; - }; - }; - A1E70D500A38B5F3007BE3E3 /* XCBreakpointsBucket */ = { - isa = XCBreakpointsBucket; - name = CCAPI; - objects = ( - ); - }; - A1E70D5C0A38B796007BE3E3 /* CCacheServer */ = { - activeExec = 0; - executables = ( - A1E70D5E0A38B796007BE3E3 /* CCacheServer */, - ); - }; - A1E70D5E0A38B796007BE3E3 /* CCacheServer */ = { - isa = PBXExecutable; - activeArgIndex = 2147483647; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - configStateDict = { - }; - customDataFormattersEnabled = 1; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = CCacheServer; - sourceDirectories = ( - ); - }; - A1E70D930A38BB67007BE3E3 /* main.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {980, 476}}"; - sepNavSelRange = "{316, 42}"; - sepNavVisRect = "{{0, 24}, {980, 387}}"; - }; - }; - A1E70D9E0A38BCAD007BE3E3 /* mig.defs */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {804, 826}}"; - sepNavSelRange = "{2123, 0}"; - sepNavVisRect = "{{0, 400}, {804, 391}}"; - }; - }; - A1E70DB10A38C01E007BE3E3 /* mig_types.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {804, 686}}"; - sepNavSelRange = "{2188, 0}"; - sepNavVisRect = "{{0, 281}, {804, 391}}"; - }; - }; - A1E70DE10A38C6FD007BE3E3 /* kipc_common.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {888, 1078}}"; - sepNavSelRange = "{1293, 0}"; - sepNavVisRect = "{{0, 206}, {888, 470}}"; - }; - }; - A1E70DE40A38C6FD007BE3E3 /* kipc_client.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {804, 1218}}"; - sepNavSelRange = "{1240, 34}"; - sepNavVisRect = "{{0, 235}, {804, 329}}"; - }; - }; - A1E70DE50A38C6FD007BE3E3 /* kipc_common.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {632, 1316}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {621, 499}}"; - }; - }; - A1E70DE60A38C6FD007BE3E3 /* kipc_server.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {728, 4396}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {621, 499}}"; - }; - }; - A1E70DE70A38C6FD007BE3E3 /* kipc_session.c */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {698, 1988}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {621, 499}}"; - }; - }; - A1E70DE80A38C6FD007BE3E3 /* notify.defs */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {621, 518}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {621, 499}}"; - }; - }; - A1E70DF70A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D150A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 308; - vrLoc = 0; - }; - A1E70DF80A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D3B0A38B5BB007BE3E3 /* client.c */; - name = "client.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 903; - vrLoc = 0; - }; - A1E70DF90A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D3C0A38B5BB007BE3E3 /* dllmain.c */; - name = "dllmain.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 298; - vrLoc = 0; - }; - A1E70DFA0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D3A0A38B5BB007BE3E3 /* cacheapi.def */; - name = "cacheapi.def: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 847; - vrLoc = 0; - }; - A1E70DFB0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D460A38B5BC007BE3E3 /* server.c */; - name = "server.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 756; - vrLoc = 0; - }; - A1E70DFD0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1826; - vrLoc = 0; - }; - A1E70E010A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D0B0A38B5BB007BE3E3 /* credentials.h */; - name = "credentials.h: 1"; - rLen = 2110; - rLoc = 0; - rType = 0; - vrLen = 1604; - vrLoc = 749; - }; - A1E70E020A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2C0A38B5BB007BE3E3 /* main.c */; - name = "main.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1306; - vrLoc = 202; - }; - A1E70E060A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1B0A38B5BB007BE3E3 /* CredentialsCache2.h */; - name = "CredentialsCache2.h: 303"; - rLen = 0; - rLoc = 7813; - rType = 0; - vrLen = 1128; - vrLoc = 6802; - }; - A1E70E090A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE80A38C6FD007BE3E3 /* notify.defs */; - name = "notify.defs: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1437; - vrLoc = 0; - }; - A1E70E0A0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE60A38C6FD007BE3E3 /* kipc_server.c */; - name = "kipc_server.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1538; - vrLoc = 0; - }; - A1E70E0B0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE70A38C6FD007BE3E3 /* kipc_session.c */; - name = "kipc_session.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1461; - vrLoc = 0; - }; - A1E70E0C0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE50A38C6FD007BE3E3 /* kipc_common.c */; - name = "kipc_common.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1496; - vrLoc = 0; - }; - A1E70E100A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D150A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 308; - vrLoc = 0; - }; - A1E70E110A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1826; - vrLoc = 0; - }; - A1E70E120A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D3B0A38B5BB007BE3E3 /* client.c */; - name = "client.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 903; - vrLoc = 0; - }; - A1E70E130A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D3C0A38B5BB007BE3E3 /* dllmain.c */; - name = "dllmain.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 298; - vrLoc = 0; - }; - A1E70E140A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D3A0A38B5BB007BE3E3 /* cacheapi.def */; - name = "cacheapi.def: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 847; - vrLoc = 0; - }; - A1E70E150A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D460A38B5BC007BE3E3 /* server.c */; - name = "server.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 756; - vrLoc = 0; - }; - A1E70E160A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2C0A38B5BB007BE3E3 /* main.c */; - name = "main.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 954; - vrLoc = 0; - }; - A1E70E170A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */; - name = "serv_ops.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1825; - vrLoc = 0; - }; - A1E70E180A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D280A38B5BB007BE3E3 /* ccs_ccache.c */; - name = "ccs_ccache.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1861; - vrLoc = 0; - }; - A1E70E1B0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D930A38BB67007BE3E3 /* main.c */; - name = "main.c: 22"; - rLen = 0; - rLoc = 509; - rType = 0; - vrLen = 954; - vrLoc = 0; - }; - A1E70E1E0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D0B0A38B5BB007BE3E3 /* credentials.h */; - name = "credentials.h: 1"; - rLen = 2110; - rLoc = 0; - rType = 0; - vrLen = 1604; - vrLoc = 749; - }; - A1E70E1F0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D130A38B5BB007BE3E3 /* marshall.c */; - name = cci_creds_v5_marshall; - rLen = 21; - rLoc = 6670; - rType = 0; - vrLen = 1513; - vrLoc = 6116; - }; - A1E70E200A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = cci_msg_flatten; - rLen = 15; - rLoc = 7396; - rType = 0; - vrLen = 1003; - vrLoc = 7034; - }; - A1E70E250A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 583"; - rLen = 0; - rLoc = 20525; - rType = 0; - vrLen = 2454; - vrLoc = 18163; - }; - A1E70E260A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D9E0A38BCAD007BE3E3 /* mig.defs */; - name = "ccapi_ipc.defs: 55"; - rLen = 0; - rLoc = 2520; - rType = 0; - vrLen = 1955; - vrLoc = 87; - }; - A1E70E290A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE40A38C6FD007BE3E3 /* kipc_client.c */; - name = "kipc_client.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1544; - vrLoc = 0; - }; - A1E70E2A0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE50A38C6FD007BE3E3 /* kipc_common.c */; - name = "kipc_common.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1496; - vrLoc = 0; - }; - A1E70E2B0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE80A38C6FD007BE3E3 /* notify.defs */; - name = "notify.defs: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1437; - vrLoc = 0; - }; - A1E70E2D0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE60A38C6FD007BE3E3 /* kipc_server.c */; - name = "kipc_server.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1538; - vrLoc = 0; - }; - A1E70E2E0A38C765007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE70A38C6FD007BE3E3 /* kipc_session.c */; - name = "kipc_session.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1461; - vrLoc = 0; - }; - A1E70E380A38C778007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D000A38B5BB007BE3E3 /* cacheapi.c */; - name = "#include "; - rLen = 30; - rLoc = 2170; - rType = 0; - vrLen = 696; - vrLoc = 1821; - }; - A1E70E3D0A38C78C007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D260A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 437; - vrLoc = 0; - }; - A1E70E410A38C78C007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D260A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 437; - vrLoc = 0; - }; - A1E70E430A38C791007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D0F0A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 432; - vrLoc = 0; - }; - A1E70E450A38C791007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D0F0A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 432; - vrLoc = 0; - }; - A1E70E4A0A38C7BE007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D0F0A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 432; - vrLoc = 0; - }; - A1E70E520A38C9FD007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D150A38B5BB007BE3E3 /* NTMakefile */; - name = "NTMakefile: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 308; - vrLoc = 0; - }; - A1E70E530A38C9FD007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1C0A38B5BB007BE3E3 /* datastore.h */; - name = cc_list_type; - rLen = 0; - rLoc = 2301; - rType = 0; - vrLen = 425; - vrLoc = 2113; - }; - A1E70E560A38C9FD007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = cc_list_type; - rLen = 12; - rLoc = 2736; - rType = 0; - vrLen = 728; - vrLoc = 2219; - }; - A1E70E580A38C9FD007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1C0A38B5BB007BE3E3 /* datastore.h */; - name = cc_list_type; - rLen = 0; - rLoc = 2301; - rType = 0; - vrLen = 425; - vrLoc = 2113; - }; - A1E70E6F0A38CA08007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1F0A38B5BB007BE3E3 /* msg.h */; - name = "#include \"generic_lists.h\""; - rLen = 27; - rLoc = 2765; - rType = 0; - vrLen = 755; - vrLoc = 2478; - }; - A1E70E770A38CA55007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D190A38B5BB007BE3E3 /* cc_rpc.h */; - name = "#include \"msg.h\""; - rLen = 18; - rLoc = 2202; - rType = 0; - vrLen = 644; - vrLoc = 1674; - }; - A1E70E7D0A38CA55007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D190A38B5BB007BE3E3 /* cc_rpc.h */; - name = "#include \"msg.h\""; - rLen = 18; - rLoc = 2202; - rType = 0; - vrLen = 644; - vrLoc = 1674; - }; - A1E70E9C0A38CAF1007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 56"; - rLen = 0; - rLoc = 2280; - rType = 0; - vrLen = 463; - vrLoc = 2119; - }; - A1E70EA80A38CB24007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: cc_generic_list_node_t"; - rLen = 0; - rLoc = 2452; - rType = 0; - vrLen = 598; - vrLoc = 2206; - }; - A1E70EAB0A38CB24007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D080A38B5BB007BE3E3 /* context.c */; - name = "code = cci_msg_add_data_blob(request, (void *)name, strlen(name) + 1, &blob_pos);"; - rLen = 86; - rLoc = 14073; - rType = 0; - vrLen = 704; - vrLoc = 13925; - }; - A1E70EB50A38CB4D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D000A38B5BB007BE3E3 /* cacheapi.c */; - name = "strncpy(vendor, string, sizeof(vendor)-1);"; - rLen = 55; - rLoc = 4926; - rType = 0; - vrLen = 780; - vrLoc = 1821; - }; - A1E70EC30A38CC14007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D010A38B5BB007BE3E3 /* ccache.c */; - name = "ccache.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1115; - vrLoc = 0; - }; - A1E70ECB0A38CC4C007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE40A38C6FD007BE3E3 /* kipc_client.c */; - name = "#include "; - rLen = 34; - rLoc = 1240; - rType = 0; - vrLen = 891; - vrLoc = 724; - }; - A1E70ED70A38CCB6007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE40A38C6FD007BE3E3 /* kipc_client.c */; - name = "#include "; - rLen = 34; - rLoc = 1240; - rType = 0; - vrLen = 1069; - vrLoc = 582; - }; - A1E70EE20A38CCD6007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DB10A38C01E007BE3E3 /* mig_types.h */; - name = "ccapi_ipc.h: 39"; - rLen = 0; - rLoc = 1957; - rType = 0; - vrLen = 892; - vrLoc = 1209; - }; - A1E70EFE0A38CD66007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE10A38C6FD007BE3E3 /* kipc_common.h */; - name = "#include "; - rLen = 36; - rLoc = 1293; - rType = 0; - vrLen = 609; - vrLoc = 1011; - }; - A1E70F0F0A38CE21007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D3B0A38B5BB007BE3E3 /* client.c */; - name = "client.c: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 903; - vrLoc = 0; - }; - A1E70F440A38D252007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DB10A38C01E007BE3E3 /* mig_types.h */; - name = "msg_ipc.h: 48"; - rLen = 0; - rLoc = 2188; - rType = 0; - vrLen = 793; - vrLoc = 1409; - }; - A1E70F450A38D252007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE10A38C6FD007BE3E3 /* kipc_common.h */; - name = "kipc_common.h: 32"; - rLen = 0; - rLoc = 1293; - rType = 0; - vrLen = 1252; - vrLoc = 450; - }; - A1E70F8B0A38D3B4007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D9E0A38BCAD007BE3E3 /* mig.defs */; - name = "msg_ipc.defs: 43"; - rLen = 0; - rLoc = 2111; - rType = 0; - vrLen = 1149; - vrLoc = 1378; - }; - A1E70F9C0A38D41E007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DB10A38C01E007BE3E3 /* mig_types.h */; - name = "mig_types.h: 48"; - rLen = 0; - rLoc = 2188; - rType = 0; - vrLen = 1178; - vrLoc = 1024; - }; - A1E70F9D0A38D41E007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D9E0A38BCAD007BE3E3 /* mig.defs */; - name = "mig.defs: 44"; - rLen = 0; - rLoc = 2123; - rType = 0; - vrLen = 1034; - vrLoc = 1439; - }; - A1E70FC60A38D560007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70FC70A38D560007BE3E3 /* migServer.h */; - name = ccapi_server; - rLen = 12; - rLoc = 1268; - rType = 0; - vrLen = 879; - vrLoc = 942; - }; - A1E70FC70A38D560007BE3E3 /* migServer.h */ = { - isa = PBXFileReference; - name = migServer.h; - path = "/Volumes/Ra-Tilt/Users/lxs/Builds/CCAPI.build/Debug/CCacheServer.build/DerivedSources/migServer.h"; - sourceTree = ""; - }; - A1E70FC80A38D560007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D930A38BB67007BE3E3 /* main.c */; - name = "main.c: 23"; - rLen = 0; - rLoc = 495; - rType = 0; - vrLen = 691; - vrLoc = 0; - }; - A1E70FC90A38D560007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1C0A38B5BB007BE3E3 /* datastore.h */; - name = "datastore.h: 55"; - rLen = 0; - rLoc = 2301; - rType = 0; - vrLen = 805; - vrLoc = 2101; - }; - A1E70FCA0A38D560007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 52"; - rLen = 0; - rLoc = 2371; - rType = 0; - vrLen = 757; - vrLoc = 2012; - }; - A1E70FCD0A38D560007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D930A38BB67007BE3E3 /* main.c */; - name = "main.c: 23"; - rLen = 0; - rLoc = 495; - rType = 0; - vrLen = 691; - vrLoc = 0; - }; - A1E70FD80A38D573007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D930A38BB67007BE3E3 /* main.c */; - name = "syslog (LOG_INFO, \"Starting up.\");"; - rLen = 42; - rLoc = 316; - rType = 0; - vrLen = 628; - vrLoc = 21; - }; - A1E70FEE0A38D7C0007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D130A38B5BB007BE3E3 /* marshall.c */; - name = "marshall.c: 48"; - rLen = 0; - rLoc = 2234; - rType = 0; - vrLen = 831; - vrLoc = 1674; - }; - A1E70FEF0A38D7C0007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D010A38B5BB007BE3E3 /* ccache.c */; - name = "ccache.c: 49"; - rLen = 0; - rLoc = 2186; - rType = 0; - vrLen = 432; - vrLoc = 2106; - }; - A1E70FF00A38D7C0007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D080A38B5BB007BE3E3 /* context.c */; - name = "code = cci_msg_retrieve_blob(response, ntohl(response_header->vendor_offset), ntohl(response_header->vendor_length), &string);"; - rLen = 139; - rLoc = 29872; - rType = 0; - vrLen = 757; - vrLoc = 27442; - }; - A1E70FFA0A38D806007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D130A38B5BB007BE3E3 /* marshall.c */; - name = "memcpy(creds->client, flat + header->client.data, length);"; - rLen = 68; - rLoc = 11995; - rType = 0; - vrLen = 1038; - vrLoc = 11543; - }; - A1E70FFC0A38D806007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D020A38B5BB007BE3E3 /* ccache.h */; - name = cc_handle; - rLen = 9; - rLoc = 2339; - rType = 0; - vrLen = 663; - vrLoc = 2042; - }; - A1E70FFF0A38D806007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D020A38B5BB007BE3E3 /* ccache.h */; - name = cc_handle; - rLen = 9; - rLoc = 2339; - rType = 0; - vrLen = 663; - vrLoc = 2042; - }; - A1E710010A38D814007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 617; - vrLoc = 4722; - }; - A1E7100A0A38D888007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 619; - vrLoc = 4720; - }; - A1E7100C0A38D888007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D080A38B5BB007BE3E3 /* context.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 29891; - rType = 0; - vrLen = 1038; - vrLoc = 29282; - }; - A1E7100D0A38D888007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D0C0A38B5BB007BE3E3 /* credentials_iterator.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 6723; - rType = 0; - vrLen = 1080; - vrLoc = 6223; - }; - A1E710110A38D888007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 22827; - rType = 0; - vrLen = 921; - vrLoc = 22183; - }; - A1E710140A38D888007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D0C0A38B5BB007BE3E3 /* credentials_iterator.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 6723; - rType = 0; - vrLen = 1080; - vrLoc = 6223; - }; - A1E7103C0A38DE0B007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1F0A38B5BB007BE3E3 /* msg.h */; - name = "msg.h: 142"; - rLen = 0; - rLoc = 5529; - rType = 0; - vrLen = 1239; - vrLoc = 4630; - }; - A1E710400A38DE0B007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: cci_msg_retrieve_blob"; - rLen = 0; - rLoc = 15353; - rType = 0; - vrLen = 962; - vrLoc = 14947; - }; - A1E710530A39EC0B007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */; - name = "serv_ops.c: 322"; - rLen = 0; - rLoc = 12676; - rType = 0; - vrLen = 1049; - vrLoc = 12199; - }; - A1E7105A0A39ED89007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D000A38B5BB007BE3E3 /* cacheapi.c */; - name = "code = cci_msg_retrieve_blob(response, ntohl(response_header->vendor_offset), ntohl(response_header->vendor_length), &string);"; - rLen = 139; - rLoc = 4787; - rType = 0; - vrLen = 1079; - vrLoc = 4176; - }; - A1E7105D0A39ED89007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D000A38B5BB007BE3E3 /* cacheapi.c */; - name = "code = cci_msg_retrieve_blob(response, ntohl(response_header->vendor_offset), ntohl(response_header->vendor_length), &string);"; - rLen = 139; - rLoc = 4787; - rType = 0; - vrLen = 1079; - vrLoc = 4176; - }; - A1E7105E0A39ED89007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "cur_pos = msg->flat;"; - rLen = 25; - rLoc = 7704; - rType = 0; - vrLen = 835; - vrLoc = 7353; - }; - A1E710680A39F102007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */; - name = "resp_header->ccache = htonll((cc_handle) ccache);"; - rLen = 54; - rLoc = 23249; - rType = 0; - vrLen = 1200; - vrLoc = 22714; - }; - A1E710840A3A1CFB007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D010A38B5BB007BE3E3 /* ccache.c */; - name = "ccache.c: 378"; - rLen = 0; - rLoc = 11919; - rType = 0; - vrLen = 1092; - vrLoc = 11685; - }; - A1E710860A3A1CFB007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: 585"; - rLen = 0; - rLoc = 15353; - rType = 0; - vrLen = 1129; - vrLoc = 14797; - }; - A1E710870A3A1CFB007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D010A38B5BB007BE3E3 /* ccache.c */; - name = "ccache.c: 378"; - rLen = 0; - rLoc = 11919; - rType = 0; - vrLen = 1092; - vrLoc = 11685; - }; - A1E710890A3A1D04007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D280A38B5BB007BE3E3 /* ccs_ccache.c */; - name = "ccs_ccache.c: 289"; - rLen = 0; - rLoc = 9783; - rType = 0; - vrLen = 919; - vrLoc = 9327; - }; - A1E7108B0A3A1D04007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D280A38B5BB007BE3E3 /* ccs_ccache.c */; - name = "ccs_ccache.c: 289"; - rLen = 0; - rLoc = 9783; - rType = 0; - vrLen = 919; - vrLoc = 9327; - }; - A1E7108D0A3A1D06007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D280A38B5BB007BE3E3 /* ccs_ccache.c */; - name = "ccs_ccache.c: 289"; - rLen = 0; - rLoc = 9783; - rType = 0; - vrLen = 1441; - vrLoc = 9196; - }; - A1E710930A3A1D22007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 36879; - rType = 0; - vrLen = 1393; - vrLoc = 35980; - }; - A1E710940A3A1D22007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1F0A38B5BB007BE3E3 /* msg.h */; - name = "msg.h: 142"; - rLen = 0; - rLoc = 5529; - rType = 0; - vrLen = 1480; - vrLoc = 4457; - }; - A1E710950A3A1D22007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - rLen = 21; - rLoc = 14700; - rType = 0; - }; - A1E710960A3A1D22007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 36879; - rType = 0; - vrLen = 1393; - vrLoc = 35980; - }; - A1E710970A3A1D22007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1F0A38B5BB007BE3E3 /* msg.h */; - name = "msg.h: 142"; - rLen = 0; - rLoc = 5529; - rType = 0; - vrLen = 1480; - vrLoc = 4457; - }; - A1E7109C0A3A1D2B007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D2F0A38B5BB007BE3E3 /* serv_ops.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 36879; - rType = 0; - vrLen = 1196; - vrLoc = 36344; - }; - A1E7109D0A3A1D2B007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: conflicting types for 'cci_msg_retrieve_blob'"; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - rLen = 1; - rLoc = 570; - rType = 1; - }; - A1E7109F0A3A1DD0007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: 1248"; - rLen = 0; - rLoc = 16800; - rType = 0; - vrLen = 1576; - vrLoc = 14015; - }; - A1E710A00A3A1DD0007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: 1248"; - rLen = 0; - rLoc = 16800; - rType = 0; - vrLen = 1582; - vrLoc = 0; - }; - A1E710A50A3A22E1007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: 623"; - rLen = 0; - rLoc = 16800; - rType = 0; - vrLen = 1674; - vrLoc = 0; - }; - A1E710AB0A3A22F5007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: 623"; - rLen = 0; - rLoc = 16800; - rType = 0; - vrLen = 2012; - vrLoc = 0; - }; - A1E710AC0A3A22F5007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: cci_msg_retrieve_blob"; - rLen = 0; - rLoc = 15346; - rType = 0; - vrLen = 1284; - vrLoc = 15187; - }; - A1E710AD0A3A22F5007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: cci_msg_retrieve_blob"; - rLen = 0; - rLoc = 15346; - rType = 0; - vrLen = 1209; - vrLoc = 15187; - }; - A1E710AF0A3A22FE007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: cci_msg_retrieve_blob"; - rLen = 0; - rLoc = 15346; - rType = 0; - vrLen = 1589; - vrLoc = 14614; - }; - A1E710B30A3A22FF007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = "msg.c: cci_msg_retrieve_blob"; - rLen = 0; - rLoc = 15346; - rType = 0; - vrLen = 1209; - vrLoc = 15187; - }; - A1E710B90A3A23FB007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 15262; - rType = 0; - vrLen = 1209; - vrLoc = 15187; - }; - A1E710BC0A3A2415007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 15262; - rType = 0; - vrLen = 1356; - vrLoc = 15083; - }; - A1E710BD0A3A2415007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 56"; - rLen = 0; - rLoc = 2280; - rType = 0; - vrLen = 873; - vrLoc = 1826; - }; - A1E710BE0A3A2415007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 15262; - rType = 0; - vrLen = 1356; - vrLoc = 15083; - }; - A1E710BF0A3A2415007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 56"; - rLen = 0; - rLoc = 2280; - rType = 0; - vrLen = 863; - vrLoc = 1826; - }; - A1E710C00A3A2415007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 15262; - rType = 0; - vrLen = 1209; - vrLoc = 15187; - }; - A1E710C60A3A2441007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 56"; - rLen = 0; - rLoc = 2280; - rType = 0; - vrLen = 863; - vrLoc = 1826; - }; - A1E710C70A3A2441007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 54"; - rLen = 0; - rLoc = 2452; - rType = 0; - vrLen = 1215; - vrLoc = 1674; - }; - A1E710C80A3A2441007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 56"; - rLen = 0; - rLoc = 2280; - rType = 0; - vrLen = 863; - vrLoc = 1826; - }; - A1E710C90A3A2441007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 58"; - rLen = 0; - rLoc = 2369; - rType = 0; - vrLen = 939; - vrLoc = 1935; - }; - A1E710CA0A3A244D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D140A38B5BB007BE3E3 /* msg.c */; - name = cci_msg_retrieve_blob; - rLen = 21; - rLoc = 15262; - rType = 0; - vrLen = 1209; - vrLoc = 15187; - }; - A1E710CB0A3A244D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 58"; - rLen = 0; - rLoc = 2369; - rType = 0; - vrLen = 696; - vrLoc = 2147; - }; - A1E710CC0A3A244D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - comments = "error: CredentialsCache.h: No such file or directory"; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - rLen = 1; - rLoc = 53; - rType = 1; - }; - A1E710CD0A3A244D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 58"; - rLen = 0; - rLoc = 2369; - rType = 0; - vrLen = 696; - vrLoc = 2147; - }; - A1E710CE0A3A244D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "#include \"CredentialsCache.h\""; - rLen = 31; - rLoc = 2221; - rType = 0; - vrLen = 608; - vrLoc = 2043; - }; - A1E710D00A3A2456007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 58"; - rLen = 0; - rLoc = 2369; - rType = 0; - vrLen = 906; - vrLoc = 2012; - }; - A1E710D10A3A2456007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "#include \"CredentialsCache.h\""; - rLen = 31; - rLoc = 2221; - rType = 0; - vrLen = 861; - vrLoc = 1792; - }; - A1E710D20A3A2456007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 822; - vrLoc = 4694; - }; - A1E710D30A3A2456007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "#include \"CredentialsCache.h\""; - rLen = 31; - rLoc = 2221; - rType = 0; - vrLen = 861; - vrLoc = 1792; - }; - A1E710D40A3A2456007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 822; - vrLoc = 4694; - }; - A1E710D70A3A2465007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 802; - vrLoc = 4694; - }; - A1E710D80A3A2465007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "#include \"CredentialsCache.h\""; - rLen = 31; - rLoc = 2221; - rType = 0; - vrLen = 683; - vrLoc = 1899; - }; - A1E710D90A3A2465007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 726; - vrLoc = 4701; - }; - A1E710DB0A3A246E007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 726; - vrLoc = 4701; - }; - A1E710DF0A3A247D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1B0A38B5BB007BE3E3 /* CredentialsCache2.h */; - name = "CredentialsCache2.h: 303"; - rLen = 0; - rLoc = 7813; - rType = 0; - vrLen = 786; - vrLoc = 7144; - }; - A1E710E00A3A247D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 802; - vrLoc = 4694; - }; - A1E710E10A3A247D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = cc_handle; - rLen = 9; - rLoc = 5095; - rType = 0; - vrLen = 802; - vrLoc = 4694; - }; - A1E710E20A3A247D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1B0A38B5BB007BE3E3 /* CredentialsCache2.h */; - name = "CredentialsCache2.h: 303"; - rLen = 0; - rLoc = 7813; - rType = 0; - vrLen = 786; - vrLoc = 7144; - }; - A1E710E30A3A247D007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 836; - vrLoc = 2610; - }; - A1E710E50A3A248A007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 1007; - vrLoc = 2180; - }; - A1E710E60A3A248A007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 750; - vrLoc = 2696; - }; - A1E710E70A3A24A4007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 750; - vrLoc = 2696; - }; - A1E710E80A3A24A5007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 825; - vrLoc = 2639; - }; - A1E710E90A3A24A5007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 750; - vrLoc = 2696; - }; - A1E710EA0A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 825; - vrLoc = 2639; - }; - A1E710EB0A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1B0A38B5BB007BE3E3 /* CredentialsCache2.h */; - name = "CredentialsCache2.h: 303"; - rLen = 0; - rLoc = 7813; - rType = 0; - vrLen = 1103; - vrLoc = 1564; - }; - A1E710EC0A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 58"; - rLen = 0; - rLoc = 2369; - rType = 0; - vrLen = 906; - vrLoc = 2012; - }; - A1E710ED0A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 825; - vrLoc = 2639; - }; - A1E710EE0A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1B0A38B5BB007BE3E3 /* CredentialsCache2.h */; - name = "CredentialsCache2.h: 303"; - rLen = 0; - rLoc = 7813; - rType = 0; - vrLen = 1103; - vrLoc = 1564; - }; - A1E710EF0A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1D0A38B5BB007BE3E3 /* generic_lists.h */; - name = "generic_lists.h: 58"; - rLen = 0; - rLoc = 2369; - rType = 0; - vrLen = 906; - vrLoc = 2012; - }; - A1E710F00A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 56"; - rLen = 0; - rLoc = 2280; - rType = 0; - vrLen = 842; - vrLoc = 1792; - }; - A1E710F10A3A2521007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 750; - vrLoc = 2696; - }; - A1E710F40A3A253F007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D120A38B5BB007BE3E3 /* generic_lists.c */; - name = "generic_lists.c: 57"; - rLen = 0; - rLoc = 2282; - rType = 0; - vrLen = 861; - vrLoc = 1792; - }; - A1E710F50A3A253F007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70D1A0A38B5BB007BE3E3 /* CredentialsCache.h */; - name = "CredentialsCache.h: 67"; - rLen = 0; - rLoc = 2631; - rType = 0; - vrLen = 750; - vrLoc = 2696; - }; - D2AAC045055464E500DB518D /* CCAPI */ = { - activeExec = 0; - }; -} diff --git a/src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.perspective b/src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.perspective deleted file mode 100644 index 198370765b..0000000000 --- a/src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.perspective +++ /dev/null @@ -1,1567 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXRunSessionModule - Name - Run Log - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - Description - AIODescriptionKey - DockingSystemVisible - - Extension - perspective - FavBarConfig - - PBXProjectModuleGUID - A1E70E750A38CA08007BE3E3 - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.default - MajorVersion - 33 - MinorVersion - 0 - Name - All-In-One - Notifications - - - XCObserverAutoDisconnectKey - - XCObserverDefintionKey - - XCObserverFactoryKey - XCPerspectivesSpecificationIdentifier - XCObserverGUIDKey - XCObserverProjectIdentifier - XCObserverNotificationKey - PBXStatusBuildStateMessageNotification - XCObserverTargetKey - XCMainBuildResultsModuleGUID - XCObserverTriggerKey - awakenModuleWithObserver: - XCObserverValidationKey - - - - OpenEditors - - PerspectiveWidths - - 1340 - 1340 - 1340 - - Perspectives - - - ChosenToolbarItems - - XCToolbarPerspectiveControl - NSToolbarSeparatorItem - active-target-popup - action - NSToolbarFlexibleSpaceItem - buildOrClean - build-and-runOrDebug - com.apple.ide.PBXToolbarStopButton - get-info - toggle-editor - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.project - IsVertical - - Layout - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CA23ED40692098700951B8B - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 268 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 08FB7794FE84155DC02AAC07 - A1E70CFF0A38B5BB007BE3E3 - A1E70D110A38B5BB007BE3E3 - A1E70D7E0A38BAC5007BE3E3 - A1E70D180A38B5BB007BE3E3 - A1E70D270A38B5BB007BE3E3 - A1E70D2B0A38B5BB007BE3E3 - A1E70D390A38B5BB007BE3E3 - 1C37FBAC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 24 - 19 - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {268, 841}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - - GeometryConfiguration - - Frame - {{0, 0}, {285, 859}} - GroupTreeTableConfiguration - - MainColumn - 268 - - RubberWindowFrame - 170 278 1340 900 0 0 1920 1178 - - Module - PBXSmartGroupTreeModule - Proportion - 285pt - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - A1E70DF50A38C765007BE3E3 - PBXProjectModuleLabel - generic_lists.c - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - A1E70DF60A38C765007BE3E3 - PBXProjectModuleLabel - generic_lists.c - _historyCapacity - 0 - bookmark - A1E710F40A3A253F007BE3E3 - history - - A1E70DF90A38C765007BE3E3 - A1E70DFA0A38C765007BE3E3 - A1E70DFB0A38C765007BE3E3 - A1E70E010A38C765007BE3E3 - A1E70E020A38C765007BE3E3 - A1E70E090A38C765007BE3E3 - A1E70E0A0A38C765007BE3E3 - A1E70E0B0A38C765007BE3E3 - A1E70E0C0A38C765007BE3E3 - A1E70E3D0A38C78C007BE3E3 - A1E70E4A0A38C7BE007BE3E3 - A1E70E520A38C9FD007BE3E3 - A1E70E530A38C9FD007BE3E3 - A1E70E770A38CA55007BE3E3 - A1E70EB50A38CB4D007BE3E3 - A1E70ED70A38CCB6007BE3E3 - A1E70EFE0A38CD66007BE3E3 - A1E70F0F0A38CE21007BE3E3 - A1E70F9C0A38D41E007BE3E3 - A1E70F9D0A38D41E007BE3E3 - A1E70FC60A38D560007BE3E3 - A1E70FD80A38D573007BE3E3 - A1E70FFA0A38D806007BE3E3 - A1E70FFC0A38D806007BE3E3 - A1E7100C0A38D888007BE3E3 - A1E7100D0A38D888007BE3E3 - A1E710840A3A1CFB007BE3E3 - A1E7108D0A3A1D06007BE3E3 - A1E710930A3A1D22007BE3E3 - A1E710940A3A1D22007BE3E3 - A1E710BC0A3A2415007BE3E3 - A1E710EA0A3A2521007BE3E3 - A1E710EB0A3A2521007BE3E3 - A1E710EC0A3A2521007BE3E3 - A1E710D10A3A2456007BE3E3 - - prevStack - - A1E70E100A38C765007BE3E3 - A1E70E110A38C765007BE3E3 - A1E70E120A38C765007BE3E3 - A1E70E130A38C765007BE3E3 - A1E70E140A38C765007BE3E3 - A1E70E150A38C765007BE3E3 - A1E70E160A38C765007BE3E3 - A1E70E180A38C765007BE3E3 - A1E70E1B0A38C765007BE3E3 - A1E70E1E0A38C765007BE3E3 - A1E70E1F0A38C765007BE3E3 - A1E70E200A38C765007BE3E3 - A1E70E250A38C765007BE3E3 - A1E70E260A38C765007BE3E3 - A1E70E290A38C765007BE3E3 - A1E70E2A0A38C765007BE3E3 - A1E70E2B0A38C765007BE3E3 - A1E70E2D0A38C765007BE3E3 - A1E70E2E0A38C765007BE3E3 - A1E70E380A38C778007BE3E3 - A1E70E410A38C78C007BE3E3 - A1E70E450A38C791007BE3E3 - A1E70E560A38C9FD007BE3E3 - A1E70E580A38C9FD007BE3E3 - A1E70E6F0A38CA08007BE3E3 - A1E70E7D0A38CA55007BE3E3 - A1E70EAB0A38CB24007BE3E3 - A1E70EC30A38CC14007BE3E3 - A1E70EE20A38CCD6007BE3E3 - A1E70FFF0A38D806007BE3E3 - A1E710110A38D888007BE3E3 - A1E710140A38D888007BE3E3 - A1E710BE0A3A2415007BE3E3 - A1E710C80A3A2441007BE3E3 - A1E710D30A3A2456007BE3E3 - A1E710E10A3A247D007BE3E3 - A1E710E20A3A247D007BE3E3 - A1E710ED0A3A2521007BE3E3 - A1E710EE0A3A2521007BE3E3 - A1E710EF0A3A2521007BE3E3 - - - SplitCount - 1 - - StatusBarVisibility - - XCSharingToken - com.apple.Xcode.CommonNavigatorGroupSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {1050, 553}} - RubberWindowFrame - 170 278 1340 900 0 0 1920 1178 - - Module - PBXNavigatorGroup - Proportion - 553pt - - - Proportion - 301pt - Tabs - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA23EDF0692099D00951B8B - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{10, 27}, {1050, 274}} - RubberWindowFrame - 170 278 1340 900 0 0 1920 1178 - - Module - XCDetailModule - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA23EE00692099D00951B8B - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{10, 27}, {1050, 274}} - - Module - PBXProjectFindModule - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA23EE10692099D00951B8B - PBXProjectModuleLabel - SCM Results - - GeometryConfiguration - - Frame - {{10, 31}, {603, 297}} - - Module - PBXCVSModule - - - - - Proportion - 1050pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDockableTabModule - XCDetailModule - PBXProjectFindModule - PBXCVSModule - - TableOfContents - - A1E710B00A3A22FE007BE3E3 - 1CA23ED40692098700951B8B - A1E710B10A3A22FE007BE3E3 - A1E70DF50A38C765007BE3E3 - A1E710B20A3A22FE007BE3E3 - 1CA23EDF0692099D00951B8B - 1CA23EE00692099D00951B8B - 1CA23EE10692099D00951B8B - - ToolbarConfiguration - xcode.toolbar.config.default - - - ChosenToolbarItems - - XCToolbarPerspectiveControl - NSToolbarSeparatorItem - active-target-popup - active-executable-popup - active-buildstyle-popup - NSToolbarFlexibleSpaceItem - build - clean - NSToolbarSeparatorItem - run - debug - - ControllerClassBaseName - - IconName - BuildTabIcon - Identifier - perspective.build - IsVertical - - Layout - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - PBXProjectModuleGUID - 1CA23EE50692099D00951B8B - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 184 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {184, 841}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - - GeometryConfiguration - - Frame - {{0, 0}, {201, 859}} - GroupTreeTableConfiguration - - MainColumn - 184 - - - Module - PBXSmartGroupTreeModule - Proportion - 201pt - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - A1E70DF50A38C765007BE3E3 - PBXProjectModuleLabel - CredentialsCache.h - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - A1E70DF60A38C765007BE3E3 - PBXProjectModuleLabel - CredentialsCache.h - _historyCapacity - 0 - bookmark - A1E710F50A3A253F007BE3E3 - history - - A1E70DF70A38C765007BE3E3 - A1E70DF80A38C765007BE3E3 - A1E70DF90A38C765007BE3E3 - A1E70DFA0A38C765007BE3E3 - A1E70DFB0A38C765007BE3E3 - A1E70E010A38C765007BE3E3 - A1E70E020A38C765007BE3E3 - A1E70E060A38C765007BE3E3 - A1E70E090A38C765007BE3E3 - A1E70E0A0A38C765007BE3E3 - A1E70E0B0A38C765007BE3E3 - A1E70E0C0A38C765007BE3E3 - A1E70E3D0A38C78C007BE3E3 - A1E70E430A38C791007BE3E3 - A1E70E770A38CA55007BE3E3 - A1E70ECB0A38CC4C007BE3E3 - A1E70F440A38D252007BE3E3 - A1E70F450A38D252007BE3E3 - A1E70F8B0A38D3B4007BE3E3 - A1E70FC60A38D560007BE3E3 - A1E70FC80A38D560007BE3E3 - A1E70FC90A38D560007BE3E3 - A1E70FEE0A38D7C0007BE3E3 - A1E70FEF0A38D7C0007BE3E3 - A1E70FF00A38D7C0007BE3E3 - A1E70FFC0A38D806007BE3E3 - A1E7100D0A38D888007BE3E3 - A1E7103C0A38DE0B007BE3E3 - A1E7105A0A39ED89007BE3E3 - A1E710890A3A1D04007BE3E3 - A1E7109C0A3A1D2B007BE3E3 - A1E710CA0A3A244D007BE3E3 - A1E710CB0A3A244D007BE3E3 - A1E710D80A3A2465007BE3E3 - A1E710E30A3A247D007BE3E3 - - prevStack - - A1E70E100A38C765007BE3E3 - A1E70E110A38C765007BE3E3 - A1E70E120A38C765007BE3E3 - A1E70E130A38C765007BE3E3 - A1E70E140A38C765007BE3E3 - A1E70E150A38C765007BE3E3 - A1E70E160A38C765007BE3E3 - A1E70E170A38C765007BE3E3 - A1E70E180A38C765007BE3E3 - A1E70E1E0A38C765007BE3E3 - A1E70E1F0A38C765007BE3E3 - A1E70E250A38C765007BE3E3 - A1E70E260A38C765007BE3E3 - A1E70E290A38C765007BE3E3 - A1E70E2A0A38C765007BE3E3 - A1E70E2B0A38C765007BE3E3 - A1E70E2D0A38C765007BE3E3 - A1E70E2E0A38C765007BE3E3 - A1E70E380A38C778007BE3E3 - A1E70E410A38C78C007BE3E3 - A1E70E450A38C791007BE3E3 - A1E70E560A38C9FD007BE3E3 - A1E70E580A38C9FD007BE3E3 - A1E70E7D0A38CA55007BE3E3 - A1E70EAB0A38CB24007BE3E3 - A1E70EC30A38CC14007BE3E3 - A1E70EE20A38CCD6007BE3E3 - A1E70FCD0A38D560007BE3E3 - A1E70FFF0A38D806007BE3E3 - A1E710140A38D888007BE3E3 - A1E710400A38DE0B007BE3E3 - A1E70E6F0A38CA08007BE3E3 - A1E710CD0A3A244D007BE3E3 - A1E710E20A3A247D007BE3E3 - - - SplitCount - 1 - - StatusBarVisibility - - XCSharingToken - com.apple.Xcode.CommonNavigatorGroupSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {1134, 480}} - - Module - PBXNavigatorGroup - Proportion - 480pt - - - Proportion - 374pt - Tabs - - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build - XCBuildResultsTrigger_Collapse - 1021 - XCBuildResultsTrigger_Open - 1010 - - GeometryConfiguration - - Frame - {{10, 27}, {1134, 347}} - - Module - PBXBuildResultsModule - - - ContentConfiguration - - LauncherConfigVersion - 3 - PBXProjectModuleGUID - 1CA23EE80692099D00951B8B - PBXProjectModuleLabel - Run - Runner - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {365, 167}} - {{0, 176}, {365, 267}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {405, 443}} - {{414, 0}, {514, 443}} - - - - - GeometryConfiguration - - Frame - {{0, 0}, {0, 0}} - - Module - PBXRunSessionModule - - - - - Proportion - 1134pt - - - Name - Build - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDockableTabModule - PBXBuildResultsModule - PBXRunSessionModule - XCConsole - - TableOfContents - - A1E710B40A3A22FF007BE3E3 - 1CA23EE50692099D00951B8B - A1E710B50A3A22FF007BE3E3 - A1E70DF50A38C765007BE3E3 - A1E710B60A3A22FF007BE3E3 - XCMainBuildResultsModuleGUID - 1CA23EE80692099D00951B8B - A1E710B70A3A22FF007BE3E3 - - ToolbarConfiguration - xcode.toolbar.config.buildAndRun - - - ChosenToolbarItems - - XCToolbarPerspectiveControl - NSToolbarSeparatorItem - build-and-debug - debug - NSToolbarFlexibleSpaceItem - debugger-fix-and-continue - debugger-restart-executable - debugger-pause - debugger-continue - debugger-step-over - debugger-step-into - debugger-step-out - debugger-step-instruction - NSToolbarFlexibleSpaceItem - - ControllerClassBaseName - PBXDebugSessionModule - IconName - DebugTabIcon - Identifier - perspective.debug - IsVertical - 1 - Layout - - - ContentConfiguration - - PBXProjectModuleGUID - 1CCC7628064C1048000F2A68 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {810, 0}} - - Module - PBXDebugCLIModule - Proportion - 0% - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {395, 213}} - {{395, 0}, {415, 213}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {810, 213}} - {{0, 213}, {810, 225}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1CCC7629064C1048000F2A68 - PBXProjectModuleLabel - Debug - - GeometryConfiguration - - DebugConsoleDrawerSize - {100, 120} - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 7}, {810, 438}} - - Module - PBXDebugSessionModule - Proportion - 443pt - - - Name - Debug - ServiceClasses - - XCModuleDock - XCModuleDock - PBXDebugCLIModule - PBXDebugSessionModule - XCConsole - - TableOfContents - - 1CC8E6A5069209BD00BB180A - 1CC8E6A6069209BD00BB180A - 1CCC7628064C1048000F2A68 - 1CCC7629064C1048000F2A68 - 1CC8E6A7069209BD00BB180A - - ToolbarConfiguration - xcode.toolbar.config.debug - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecification.xcperspec' - StatusbarIsVisible - - TimeStamp - 171582783.00723499 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 1 - Type - Perspectives - UpdateMessage - - WindowJustification - 5 - WindowOrderList - - /Volumes/Ra-Tilt/Users/lxs/KfM/CCAPI/src/lib/ccapi/mac/CCAPI.xcodeproj - - WindowString - 170 278 1340 900 0 0 1920 1178 - WindowTools - - - Identifier - windowTool.find - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {781, 167}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 50% - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{8, 0}, {773, 254}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXProjectFindModule - Proportion - 50% - - - Proportion - 428pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE - 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 - 1CD0528E0623707200166675 - - WindowString - 62 385 781 470 0 0 1440 878 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - windowTool.run - Layout - - - Dock - - - ContentConfiguration - - LauncherConfigVersion - 3 - PBXProjectModuleGUID - 1CD0528B0623707200166675 - PBXProjectModuleLabel - Run - cocoapp112 - cocoapp112 - Runner - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {365, 167}} - {{0, 176}, {365, 267}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {405, 443}} - {{414, 0}, {514, 443}} - - - - - GeometryConfiguration - - Frame - {{0, 0}, {456, 192}} - RubberWindowFrame - 741 130 456 234 0 0 1280 1002 - - Module - PBXRunSessionModule - Proportion - 192pt - - - Proportion - 192pt - - - Name - Run Log - ServiceClasses - - PBXRunSessionModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAAF065D492600B07095 - 1C78EAB0065D492600B07095 - 1CD0528B0623707200166675 - 1C78EAB1065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.run - WindowString - 741 130 456 234 0 0 1280 1002 - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.09500122070312 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - Identifier - windowTool.breakpoints - IsVertical - 0 - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 0 - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 2 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpoints - WindowString - 315 424 744 409 0 0 1440 878 - WindowToolGUID - 1CDDB66807F98D9800BB5817 - WindowToolIsVisible - 1 - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimator - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 166pt - - - Proportion - 166pt - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {369, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {616, 353}} - MembersFrame - {{0, 105}, {369, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 94 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 597 125 616 374 0 0 1280 1002 - - Module - PBXClassBrowserModule - Proportion - 354pt - - - Proportion - 354pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C78EABA065D492600B07095 - 1C78EABB065D492600B07095 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 597 125 616 374 0 0 1280 1002 - - - - diff --git a/src/lib/ccapi/mac/CCAPI.xcodeproj/project.pbxproj b/src/lib/ccapi/mac/CCAPI.xcodeproj/project.pbxproj index 38a73b4c96..912c48b57c 100644 --- a/src/lib/ccapi/mac/CCAPI.xcodeproj/project.pbxproj +++ b/src/lib/ccapi/mac/CCAPI.xcodeproj/project.pbxproj @@ -95,7 +95,7 @@ A1E70D440A38B5BC007BE3E3 /* NTMakefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NTMakefile; sourceTree = ""; }; A1E70D450A38B5BC007BE3E3 /* server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = server.c; sourceTree = ""; }; A1E70D460A38B5BC007BE3E3 /* server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = server.c; sourceTree = ""; }; - A1E70D5D0A38B796007BE3E3 /* CCacheServer.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = CCacheServer.app; sourceTree = BUILT_PRODUCTS_DIR; }; + A1E70D5D0A38B796007BE3E3 /* CCacheServer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CCacheServer.app; sourceTree = BUILT_PRODUCTS_DIR; }; A1E70D910A38BB67007BE3E3 /* CCacheServer.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = CCacheServer.plist; sourceTree = ""; }; A1E70D920A38BB67007BE3E3 /* CCacheServerInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = CCacheServerInfo.plist; sourceTree = ""; }; A1E70D930A38BB67007BE3E3 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; diff --git a/src/lib/ccapi/server/ccs_lists.c b/src/lib/ccapi/server/ccs_lists.c index 779c17b7a0..5a20c10ab2 100644 --- a/src/lib/ccapi/server/ccs_lists.c +++ b/src/lib/ccapi/server/ccs_lists.c @@ -296,7 +296,7 @@ ccs_context_list_new(cc_context_list_head_t ** headpp) if (ret == NULL) return ccErrNoMem; ret->head = ret->tail = NULL; - ret->type = context; + ret->type = cc_context_list; *headpp = ret; return ccNoError; } diff --git a/src/lib/ccapi/server/mac/main.c b/src/lib/ccapi/server/mac/main.c index a9da8da6c8..004e360952 100644 --- a/src/lib/ccapi/server/mac/main.c +++ b/src/lib/ccapi/server/mac/main.c @@ -4,14 +4,14 @@ #include "CredentialsCache.h" #include "msg.h" #include "migServer.h" +#include "serv_ops.h" #include int main (int argc, const char *argv[]) { cc_int32 code = 0; - int running = 1; - + openlog (argv[0], LOG_CONS | LOG_PID, LOG_AUTH); syslog (LOG_INFO, "Starting up."); diff --git a/src/lib/ccapi/server/rpc_auth.c b/src/lib/ccapi/server/rpc_auth.c index 66bc6aee9c..a0af4254f0 100644 --- a/src/lib/ccapi/server/rpc_auth.c +++ b/src/lib/ccapi/server/rpc_auth.c @@ -47,6 +47,7 @@ #include "CredentialsCache.h" #include "rpc_auth.h" +#include cc_int32 ccs_rpc_is_authorized( cc_auth_info_t* msg_auth, cc_session_info_t* msg_session, cc_auth_info_t* stored_auth, diff --git a/src/lib/gssapi/krb5/indicate_mechs.c b/src/lib/gssapi/krb5/indicate_mechs.c index 9f2a2a1aa0..c7ee4746fd 100644 --- a/src/lib/gssapi/krb5/indicate_mechs.c +++ b/src/lib/gssapi/krb5/indicate_mechs.c @@ -34,7 +34,7 @@ krb5_gss_indicate_mechs(minor_status, mech_set) { *minor_status = 0; - if (! gssint_copy_oid_set(minor_status, gss_mech_set_krb5_both, mech_set)) { + if (gssint_copy_oid_set(minor_status, gss_mech_set_krb5_both, mech_set)) { *mech_set = GSS_C_NO_OID_SET; *minor_status = ENOMEM; return(GSS_S_FAILURE); diff --git a/src/lib/krb5/ccache/ccapi/stdcc.c b/src/lib/krb5/ccache/ccapi/stdcc.c index 4414abfbc3..34428c08ca 100644 --- a/src/lib/krb5/ccache/ccapi/stdcc.c +++ b/src/lib/krb5/ccache/ccapi/stdcc.c @@ -111,7 +111,7 @@ krb5_cc_ops krb5_cc_stdcc_ops = { * changes made. We register a unique message type with which * we'll communicate to all other processes. */ -void cache_changed() +static void cache_changed() { static unsigned int message = 0; @@ -122,7 +122,7 @@ void cache_changed() } #else /* _WIN32 */ -void cache_changed() +static void cache_changed() { return; } @@ -189,65 +189,48 @@ static const struct err_xlate err_xlate_table[] = static krb5_error_code cc_err_xlate(int err) { - const struct err_xlate *p; - + const struct err_xlate *p; + #ifdef USE_CCAPI_V3 - if (err == ccNoError) - return 0; + if (err == ccNoError) + return 0; #else - if (err == CC_NOERROR) - return 0; + if (err == CC_NOERROR) + return 0; #endif - - for (p = err_xlate_table; p->cc_err; p++) { - if (err == p->cc_err) - return p->krb5_err; - } - return KRB5_FCC_INTERNAL; /* XXX we need a miscellaneous return */ + + for (p = err_xlate_table; p->cc_err; p++) { + if (err == p->cc_err) + return p->krb5_err; + } + return KRB5_FCC_INTERNAL; /* XXX we need a miscellaneous return */ } #ifdef USE_CCAPI_V3 -static krb5_error_code stdccv3_setup(krb5_context context, - stdccCacheDataPtr ccapi_data) +static krb5_error_code stdccv3_setup (krb5_context context, + stdccCacheDataPtr ccapi_data) { - cc_int32 err; - - /* make sure the API has been intialized */ - if (gCntrlBlock == NULL) { - err = cc_initialize(&gCntrlBlock, ccapi_version_max, NULL, NULL); - if (err != ccNoError) - return cc_err_xlate(err); - } - - /* - * No ccapi_data structure, so we don't need to make sure the - * ccache exists. - */ - if (!ccapi_data) - return 0; - - /* - * The ccache already exists - */ - if (ccapi_data->NamedCache) - return 0; - - err = cc_context_open_ccache(gCntrlBlock, ccapi_data->cache_name, - &ccapi_data->NamedCache); - if (err == ccNoError) - return 0; - - ccapi_data->NamedCache = NULL; - return cc_err_xlate(err); + krb5_error_code err = 0; + + if (!err && !gCntrlBlock) { + err = cc_initialize (&gCntrlBlock, ccapi_version_max, NULL, NULL); + } + + if (!err && ccapi_data && !ccapi_data->NamedCache) { + /* ccache has not been opened yet. open it. */ + err = cc_context_open_ccache (gCntrlBlock, ccapi_data->cache_name, + &ccapi_data->NamedCache); + } + + return cc_err_xlate(err); } /* krb5_stdcc_shutdown is exported; use the old name */ void krb5_stdcc_shutdown() { - if (gCntrlBlock) - cc_context_release(gCntrlBlock); - gCntrlBlock = NULL; + if (gCntrlBlock) { cc_context_release(gCntrlBlock); } + gCntrlBlock = NULL; } /* @@ -256,58 +239,68 @@ void krb5_stdcc_shutdown() * create a new cache with a unique name, corresponds to creating a * named cache initialize the API here if we have to. */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_generate_new - (krb5_context context, krb5_ccache *id ) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_generate_new (krb5_context context, krb5_ccache *id ) { - krb5_ccache newCache = NULL; - krb5_error_code retval; - stdccCacheDataPtr ccapi_data = NULL; - char *name = NULL; - cc_time time; - int err; - - if ((retval = stdccv3_setup(context, NULL))) - return retval; - - retval = KRB5_CC_NOMEM; - if (!(newCache = (krb5_ccache) malloc(sizeof(struct _krb5_ccache)))) - goto errout; - if (!(ccapi_data = (stdccCacheDataPtr)malloc(sizeof(stdccCacheData)))) - goto errout; - if (!(name = malloc(256))) - goto errout; - - /* create a unique name */ - if (retval = cc_context_get_change_time(gCntrlBlock, &time)) - goto errout; - sprintf(name, "gen_new_cache%d", time); - - /* create the new cache */ - err = cc_context_create_ccache(gCntrlBlock, name, cc_credentials_v5, 0L, - &ccapi_data->NamedCache); - if (err != ccNoError) { - retval = cc_err_xlate(err); - goto errout; - } - - /* setup some fields */ - newCache->ops = &krb5_cc_stdcc_ops; - newCache->data = ccapi_data; - ccapi_data->cache_name = name; - - /* return a pointer to the new cache */ - *id = newCache; - - return 0; - -errout: - if (newCache) - free(newCache); - if (ccapi_data) - free(ccapi_data); - if (name) - free(name); - return retval; + krb5_error_code err = 0; + krb5_ccache newCache = NULL; + stdccCacheDataPtr ccapi_data = NULL; + cc_ccache_t ccache = NULL; + cc_string_t ccstring = NULL; + char *name = NULL; + + if (!err) { + err = stdccv3_setup(context, NULL); + } + + if (!err) { + newCache = (krb5_ccache) malloc (sizeof (*newCache)); + if (!newCache) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + ccapi_data = (stdccCacheDataPtr) malloc (sizeof (*ccapi_data)); + if (!ccapi_data) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + err = cc_context_create_new_ccache(gCntrlBlock, cc_credentials_v5, 0L, + &ccapi_data->NamedCache); + } + + if (!err) { + err = cc_ccache_get_name (ccapi_data->NamedCache, &ccstring); + } + + if (!err) { + name = (char *) malloc (sizeof (*name) * (strlen (ccstring->data) + 1)); + if (!name) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + strcpy (name, ccstring->data); + ccapi_data->cache_name = name; + name = NULL; /* take ownership */ + + ccapi_data->NamedCache = ccache; + ccache = NULL; /* take ownership */ + + newCache->ops = &krb5_cc_stdcc_ops; + newCache->data = ccapi_data; + ccapi_data = NULL; /* take ownership */ + + /* return a pointer to the new cache */ + *id = newCache; + newCache = NULL; + } + + if (ccstring) { cc_string_release (ccstring); } + if (name) { free (name); } + if (ccache) { cc_ccache_release (ccache); } + if (ccapi_data) { free (ccapi_data); } + if (newCache) { free (newCache); } + + return cc_err_xlate (err); } /* @@ -315,54 +308,58 @@ errout: * * create a new cache with the name stored in residual */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_resolve - (krb5_context context, krb5_ccache *id , const char *residual ) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_resolve (krb5_context context, krb5_ccache *id , const char *residual ) { - krb5_ccache newCache = NULL; - stdccCacheDataPtr ccapi_data = NULL; - int err; - krb5_error_code retval; - char *cName = NULL; - - if ((retval = stdccv3_setup(context, NULL))) - return retval; - - retval = KRB5_CC_NOMEM; - if (!(newCache = (krb5_ccache) malloc(sizeof(struct _krb5_ccache)))) - goto errout; - - if (!(ccapi_data = (stdccCacheDataPtr)malloc(sizeof(stdccCacheData)))) - goto errout; - - if (!(cName = malloc(strlen(residual)+1))) - goto errout; - - newCache->ops = &krb5_cc_stdcc_ops; - newCache->data = ccapi_data; - ccapi_data->cache_name = cName; - - strcpy(cName, residual); - - err = cc_context_open_ccache(gCntrlBlock, cName, - &ccapi_data->NamedCache); - if (err != ccNoError) { - ccapi_data->NamedCache = NULL; - goto errout; - } - - /* return new cache structure */ - *id = newCache; - - return 0; - -errout: - if (newCache) - free(newCache); - if (ccapi_data) - free(ccapi_data); - if (cName) - free(cName); - return retval; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = NULL; + krb5_ccache ccache = NULL; + char *name = NULL; + + if (id == NULL) { err = KRB5_CC_NOMEM; } + + if (!err) { + err = stdccv3_setup (context, NULL); + } + + if (!err) { + ccapi_data = (stdccCacheDataPtr) malloc (sizeof (*ccapi_data)); + if (!ccapi_data) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + ccache = (krb5_ccache ) malloc (sizeof (*ccache)); + if (!ccache) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + name = malloc (strlen(residual) + 1); + if (!name) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + err = cc_context_open_ccache (gCntrlBlock, residual, + &ccapi_data->NamedCache); + } + + if (!err) { + strcpy(name, residual); + ccapi_data->cache_name = name; + name = NULL; /* take ownership */ + + ccache->ops = &krb5_cc_stdcc_ops; + ccache->data = ccapi_data; + ccapi_data = NULL; /* take ownership */ + + *id = ccache; + ccache = NULL; /* take ownership */ + } + + if (ccache) { free (ccache); } + if (ccapi_data) { free (ccapi_data); } + if (name) { free (name); } + + return cc_err_xlate (err); } /* @@ -372,43 +369,43 @@ errout: * principal if not set our principal to this principal. This * searching enables ticket sharing */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_initialize - (krb5_context context, krb5_ccache id, krb5_principal princ) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_initialize (krb5_context context, + krb5_ccache id, + krb5_principal princ) { - stdccCacheDataPtr ccapi_data = NULL; - int err; - char *cName = NULL; - krb5_error_code retval; - - if ((retval = stdccv3_setup(context, NULL))) - return retval; - - /* test id for null */ - if (id == NULL) return KRB5_CC_NOMEM; - - if ((retval = krb5_unparse_name(context, princ, &cName))) - return retval; - - ccapi_data = id->data; - - - if (ccapi_data->NamedCache) { - err = cc_ccache_release(ccapi_data->NamedCache); - ccapi_data->NamedCache = NULL; - } - - err = cc_context_create_ccache(gCntrlBlock, ccapi_data->cache_name, - cc_credentials_v5, cName, - &ccapi_data->NamedCache); - if (err != ccNoError) { - krb5_free_unparsed_name(context, cName); - return cc_err_xlate(err); - } - - krb5_free_unparsed_name(context, cName); - cache_changed(); - - return cc_err_xlate(err); + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + char *name = NULL; + + if (id == NULL) { err = KRB5_CC_NOMEM; } + + if (!err) { + err = stdccv3_setup (context, NULL); + } + + if (!err) { + err = krb5_unparse_name(context, princ, &name); + } + + if (!err && ccapi_data->NamedCache) { + err = cc_ccache_release(ccapi_data->NamedCache); + ccapi_data->NamedCache = NULL; + } + + if (!err) { + err = cc_context_create_ccache (gCntrlBlock, ccapi_data->cache_name, + cc_credentials_v5, name, + &ccapi_data->NamedCache); + } + + if (!err) { + cache_changed(); + } + + if (name) { krb5_free_unparsed_name(context, name); } + + return cc_err_xlate(err); } /* @@ -416,32 +413,34 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_initialize * * store some credentials in our cache */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_store - (krb5_context context, krb5_ccache id, krb5_creds *creds ) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_store (krb5_context context, krb5_ccache id, krb5_creds *creds ) { - krb5_error_code retval; - stdccCacheDataPtr ccapi_data = id->data; - cc_credentials_t c = NULL; - int err; - - if ((retval = stdccv3_setup(context, ccapi_data))) - return retval; - - /* copy the fields from the almost identical structures */ - dupK5toCC3(context, creds, &c); - - /* - * finally store the credential - * store will copy (that is duplicate) everything - */ - err = cc_ccache_store_credentials(((stdccCacheDataPtr)(id->data))->NamedCache, c->data); - if (err != ccNoError) - return cc_err_xlate(err); - - err = cc_credentials_release(c); - - cache_changed(); - return err; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + cc_credentials_t credentials = NULL; + + if (!err) { + err = stdccv3_setup (context, ccapi_data); + } + + if (!err) { + /* copy the fields from the almost identical structures */ + err = copy_krb5_creds_to_cc_credentials (context, creds, &credentials); + } + + if (!err) { + err = cc_ccache_store_credentials (ccapi_data->NamedCache, + credentials->data); + } + + if (!err) { + cache_changed(); + } + + if (credentials) { cc_credentials_release (credentials); } + + return cc_err_xlate (err); } /* @@ -449,23 +448,29 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_store * * begin an iterator call to get all of the credentials in the cache */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_start_seq_get -(krb5_context context, krb5_ccache id , krb5_cc_cursor *cursor ) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_start_seq_get (krb5_context context, + krb5_ccache id, + krb5_cc_cursor *cursor ) { - stdccCacheDataPtr ccapi_data = id->data; - krb5_error_code retval; - int err; - cc_credentials_iterator_t iterator; - - if ((retval = stdccv3_setup(context, ccapi_data))) - return retval; - - err = cc_ccache_new_credentials_iterator(ccapi_data->NamedCache, - &iterator); - if (err != ccNoError) - return cc_err_xlate(err); - *cursor = iterator; - return 0; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + cc_credentials_iterator_t iterator = NULL; + + if (!err) { + err = stdccv3_setup (context, ccapi_data); + } + + if (!err) { + err = cc_ccache_new_credentials_iterator(ccapi_data->NamedCache, + &iterator); + } + + if (!err) { + *cursor = iterator; + } + + return cc_err_xlate (err); } /* @@ -474,37 +479,40 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_start_seq_get * - get the next credential in the cache as part of an iterator call * - this maps to call to cc_seq_fetch_creds */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_next_cred - (krb5_context context, krb5_ccache id, krb5_cc_cursor *cursor, - krb5_creds *creds) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_next_cred (krb5_context context, + krb5_ccache id, + krb5_cc_cursor *cursor, + krb5_creds *creds) { - krb5_error_code retval; - stdccCacheDataPtr ccapi_data = id->data; - int err; - cc_credentials_t cu; - cc_credentials_iterator_t iterator; - - if ((retval = stdccv3_setup(context, ccapi_data))) - return retval; - - iterator = *cursor; - if (iterator == 0) - return KRB5_CC_END; - err = cc_credentials_iterator_next(iterator, &cu); - - if (err == ccIteratorEnd) { - cc_credentials_iterator_release(iterator); - *cursor = 0; - } - if (err != ccNoError) - return cc_err_xlate(err); - - /* copy data (with translation) */ - dupCC3toK5(context, cu, creds); - - cc_credentials_release(cu); - - return 0; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + cc_credentials_t credentials = NULL; + cc_credentials_iterator_t iterator = *cursor; + + if (!iterator) { err = KRB5_CC_END; } + + if (!err) { + err = stdccv3_setup (context, ccapi_data); + } + + /* Note: CCAPI v3 ccaches can contain both v4 and v5 creds */ + while (!err) { + err = cc_credentials_iterator_next (iterator, &credentials); + + if (!err && (credentials->data->version == cc_credentials_v5)) { + copy_cc_credentials_to_krb5_creds(context, credentials, creds); + break; + } + } + + if (credentials) { cc_credentials_release (credentials); } + if (err == ccIteratorEnd) { + cc_credentials_iterator_release (iterator); + *cursor = 0; + } + + return cc_err_xlate (err); } @@ -514,12 +522,11 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_next_cred * - try to find a matching credential in the cache */ krb5_error_code KRB5_CALLCONV -krb5_stdccv3_retrieve(context, id, whichfields, mcreds, creds) - krb5_context context; - krb5_ccache id; - krb5_flags whichfields; - krb5_creds *mcreds; - krb5_creds *creds; +krb5_stdccv3_retrieve (krb5_context context, + krb5_ccache id, + krb5_flags whichfields, + krb5_creds *mcreds, + krb5_creds *creds) { return krb5_cc_retrieve_cred_default (context, id, whichfields, mcreds, creds); @@ -530,28 +537,26 @@ krb5_stdccv3_retrieve(context, id, whichfields, mcreds, creds) * * just free up the storage assoicated with the cursor (if we can) */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_end_seq_get - (krb5_context context, krb5_ccache id, krb5_cc_cursor *cursor) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_end_seq_get (krb5_context context, + krb5_ccache id, + krb5_cc_cursor *cursor) { - krb5_error_code retval; - stdccCacheDataPtr ccapi_data = NULL; - int err; - cc_credentials_iterator_t iterator; - - ccapi_data = id->data; - - if ((retval = stdccv3_setup(context, ccapi_data))) - return retval; - - if (*cursor == NULL) - return 0; - - iterator = *cursor; - - err = cc_credentials_iterator_release(iterator); - if (err != ccNoError) - return cc_err_xlate(err); - return(0); + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + cc_credentials_iterator_t iterator = *cursor; + + if (!iterator) { return 0; } + + if (!err) { + err = stdccv3_setup (context, ccapi_data); + } + + if (!err) { + err = cc_credentials_iterator_release(iterator); + } + + return cc_err_xlate(err); } /* @@ -560,26 +565,31 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_end_seq_get * - free our pointers to the NC */ krb5_error_code KRB5_CALLCONV -krb5_stdccv3_close(krb5_context context, krb5_ccache id) +krb5_stdccv3_close(krb5_context context, + krb5_ccache id) { - krb5_error_code retval; - stdccCacheDataPtr ccapi_data = id->data; - - if ((retval = stdccv3_setup(context, NULL))) - return retval; - - /* free it */ + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + + if (!err) { + err = stdccv3_setup (context, NULL); + } + + if (!err) { if (ccapi_data) { - if (ccapi_data->cache_name) - free(ccapi_data->cache_name); - if (ccapi_data->NamedCache) - cc_ccache_release(ccapi_data->NamedCache); - free(ccapi_data); - id->data = NULL; + if (ccapi_data->cache_name) { + free (ccapi_data->cache_name); + } + if (ccapi_data->NamedCache) { + err = cc_ccache_release (ccapi_data->NamedCache); + } + free (ccapi_data); + id->data = NULL; } - free(id); - - return 0; + free (id); + } + + return cc_err_xlate(err); } /* @@ -588,37 +598,36 @@ krb5_stdccv3_close(krb5_context context, krb5_ccache id) * - free our storage and the cache */ krb5_error_code KRB5_CALLCONV -krb5_stdccv3_destroy (krb5_context context, krb5_ccache id) +krb5_stdccv3_destroy (krb5_context context, + krb5_ccache id) { - int err; - krb5_error_code retval; - stdccCacheDataPtr ccapi_data = id->data; - - if ((retval = stdccv3_setup(context, ccapi_data))) { - return retval; - } - - /* free memory associated with the krb5_ccache */ + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + + if (!err) { + err = stdccv3_setup(context, ccapi_data); + } + + if (!err) { if (ccapi_data) { - if (ccapi_data->cache_name) - free(ccapi_data->cache_name); - if (ccapi_data->NamedCache) { - /* destroy the named cache */ - err = cc_ccache_destroy(ccapi_data->NamedCache); - retval = cc_err_xlate(err); - cache_changed(); - } - free(ccapi_data); - id->data = NULL; + if (ccapi_data->cache_name) { + free(ccapi_data->cache_name); + } + if (ccapi_data->NamedCache) { + /* destroy the named cache */ + err = cc_ccache_destroy(ccapi_data->NamedCache); + if (err == ccErrCCacheNotFound) { + err = 0; /* ccache maybe already destroyed */ + } + cache_changed(); + } + free(ccapi_data); + id->data = NULL; } - free(id); - - /* If the cache does not exist when we tried to destroy it, - that's fine. That means someone else destroyed it since - we resolved it. */ - if (retval == ccErrCCacheNotFound) - return 0; - return retval; + free(id); + } + + return cc_err_xlate(err); } /* @@ -626,15 +635,17 @@ krb5_stdccv3_destroy (krb5_context context, krb5_ccache id) * * - return the name of the named cache */ -const char * KRB5_CALLCONV krb5_stdccv3_get_name - (krb5_context context, krb5_ccache id ) +const char * KRB5_CALLCONV +krb5_stdccv3_get_name (krb5_context context, + krb5_ccache id ) { - stdccCacheDataPtr ccapi_data = id->data; - - if (!ccapi_data) - return 0; - - return (ccapi_data->cache_name); + stdccCacheDataPtr ccapi_data = id->data; + + if (!ccapi_data) { + return NULL; + } else { + return (ccapi_data->cache_name); + } } @@ -642,29 +653,30 @@ const char * KRB5_CALLCONV krb5_stdccv3_get_name * * - return the principal associated with the named cache */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_get_principal - (krb5_context context, krb5_ccache id , krb5_principal *princ) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_get_principal (krb5_context context, + krb5_ccache id , + krb5_principal *princ) { - int err; - cc_string_t name = NULL; - stdccCacheDataPtr ccapi_data = id->data; - krb5_error_code retval; - - if ((retval = stdccv3_setup(context, ccapi_data))) - return retval; - - /* another wrapper */ - err = cc_ccache_get_principal(ccapi_data->NamedCache, cc_credentials_v5, &name); - - if (err != ccNoError) - return cc_err_xlate(err); - - /* turn it into a krb principal */ - err = krb5_parse_name(context, name->data, princ); - - cc_string_release(name); - - return err; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + cc_string_t name = NULL; + + if (!err) { + err = stdccv3_setup(context, ccapi_data); + } + + if (!err) { + err = cc_ccache_get_principal (ccapi_data->NamedCache, cc_credentials_v5, &name); + } + + if (!err) { + err = krb5_parse_name (context, name->data, princ); + } + + if (name) { cc_string_release (name); } + + return cc_err_xlate (err); } /* @@ -672,16 +684,17 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_get_principal * * - currently a NOP since we don't store any flags in the NC */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_set_flags - (krb5_context context, krb5_ccache id , krb5_flags flags) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_set_flags (krb5_context context, + krb5_ccache id, + krb5_flags flags) { - stdccCacheDataPtr ccapi_data = id->data; - krb5_error_code retval; - - if ((retval = stdccv3_setup(context, ccapi_data))) - return retval; - - return 0; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + + err = stdccv3_setup (context, ccapi_data); + + return cc_err_xlate (err); } /* @@ -689,16 +702,17 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_set_flags * * - currently a NOP since we don't store any flags in the NC */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_get_flags - (krb5_context context, krb5_ccache id , krb5_flags *flags) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_get_flags (krb5_context context, + krb5_ccache id, + krb5_flags *flags) { - stdccCacheDataPtr ccapi_data = id->data; - krb5_error_code retval; - - if ((retval = stdccv3_setup(context, ccapi_data))) - return retval; - - return 0; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + + err = stdccv3_setup (context, ccapi_data); + + return cc_err_xlate (err); } /* @@ -706,37 +720,41 @@ krb5_error_code KRB5_CALLCONV krb5_stdccv3_get_flags * * - remove the specified credentials from the NC */ -krb5_error_code KRB5_CALLCONV krb5_stdccv3_remove - (krb5_context context, krb5_ccache id, - krb5_flags flags, krb5_creds *creds) +krb5_error_code KRB5_CALLCONV +krb5_stdccv3_remove (krb5_context context, + krb5_ccache id, + krb5_flags flags, + krb5_creds *creds) { - cc_credentials_t c = NULL; - int err; - stdccCacheDataPtr ccapi_data = id->data; - krb5_error_code retval; - - if ((retval = stdccv3_setup(context, ccapi_data))) { - if (retval == KRB5_FCC_NOFILE) - return 0; - return retval; - } - - /* convert to a cred union */ - dupK5toCC3(context, creds, &c); - - /* remove it */ - err = cc_ccache_remove_credentials(ccapi_data->NamedCache, c); - if (err != ccNoError) - return cc_err_xlate(err); - - err = cc_credentials_release(c); - cache_changed(); - if (err != ccNoError) - return cc_err_xlate(err); - - return 0; + krb5_error_code err = 0; + stdccCacheDataPtr ccapi_data = id->data; + cc_credentials_t credentials = NULL; + + if (!err) { + err = stdccv3_setup(context, ccapi_data); + } + + if (!err) { + err = copy_krb5_creds_to_cc_credentials (context, creds, &credentials); + } + + if (!err) { + err = cc_ccache_remove_credentials (ccapi_data->NamedCache, credentials); + } + + if (!err) { + cache_changed (); + } else if (err == KRB5_FCC_NOFILE) { + err = 0; + } + + if (credentials) { cc_credentials_release (credentials); } + + return cc_err_xlate (err); } + #else /* !USE_CCAPI_V3 */ + static krb5_error_code stdcc_setup(krb5_context context, stdccCacheDataPtr ccapi_data) { @@ -797,7 +815,7 @@ krb5_error_code KRB5_CALLCONV krb5_stdcc_generate_new krb5_error_code retval; stdccCacheDataPtr ccapi_data = NULL; char *name = NULL; - cc_time_t time; + cc_time_t change_time; int err; if ((retval = stdcc_setup(context, NULL))) @@ -812,8 +830,8 @@ krb5_error_code KRB5_CALLCONV krb5_stdcc_generate_new goto errout; /* create a unique name */ - cc_get_change_time(gCntrlBlock, &time); - sprintf(name, "gen_new_cache%d", time); + cc_get_change_time(gCntrlBlock, &change_time); + sprintf(name, "gen_new_cache%d", change_time); /* create the new cache */ err = cc_create(gCntrlBlock, name, name, CC_CRED_V5, 0L, @@ -878,9 +896,14 @@ krb5_error_code KRB5_CALLCONV krb5_stdcc_resolve err = cc_open(gCntrlBlock, cName, CC_CRED_V5, 0L, &ccapi_data->NamedCache); - if (err != CC_NOERROR) + if (err != CC_NOERROR) { ccapi_data->NamedCache = NULL; - + if (err != CC_NO_EXIST) { + retval = cc_err_xlate(err); + goto errout; + } + } + /* return new cache structure */ *id = newCache; @@ -1358,4 +1381,4 @@ krb5_error_code KRB5_CALLCONV krb5_stdcc_remove return 0; } -#endif /* !USE_CCAPI_V3 */ \ No newline at end of file +#endif /* !USE_CCAPI_V3 */ diff --git a/src/lib/krb5/ccache/ccapi/stdcc.h b/src/lib/krb5/ccache/ccapi/stdcc.h index c0ce13b420..03948d1a84 100644 --- a/src/lib/krb5/ccache/ccapi/stdcc.h +++ b/src/lib/krb5/ccache/ccapi/stdcc.h @@ -141,4 +141,4 @@ krb5_error_code KRB5_CALLCONV krb5_stdcc_get_flags krb5_error_code KRB5_CALLCONV krb5_stdcc_remove (krb5_context, krb5_ccache id , krb5_flags flags, krb5_creds *creds); -#endif \ No newline at end of file +#endif diff --git a/src/lib/krb5/ccache/ccapi/stdcc_util.c b/src/lib/krb5/ccache/ccapi/stdcc_util.c index 1969b6e718..2e6538ccaf 100644 --- a/src/lib/krb5/ccache/ccapi/stdcc_util.c +++ b/src/lib/krb5/ccache/ccapi/stdcc_util.c @@ -23,9 +23,52 @@ /* krb5int_cc_credentials_release(cc_credentials_t creds) * - function used to release internally generated cc_credentials_t objects */ + +static void +free_cc_array (cc_data **io_cc_array) +{ + if (io_cc_array) { + unsigned int i; + + for (i = 0; io_cc_array[i]; i++) { + if (io_cc_array[i]->data) { free (io_cc_array[i]->data); } + free (io_cc_array[i]); + } + free (io_cc_array); + } +} + static cc_int32 -krb5int_cc_credentials_release(cc_credentials_t creds) { - free(creds); +krb5int_cc_credentials_release(cc_credentials_t creds) +{ + if (creds) { + if (creds->data) { + if (creds->data->version == cc_credentials_v5 && + creds->data->credentials.credentials_v5) { + cc_credentials_v5_t *cv5 = creds->data->credentials.credentials_v5; + + /* should use krb5_free_unparsed_name but we have no context */ + if (cv5->client) { free (cv5->client); } + if (cv5->server) { free (cv5->server); } + + if (cv5->keyblock.data) { free (cv5->keyblock.data); } + if (cv5->ticket.data) { free (cv5->ticket.data); } + if (cv5->second_ticket.data) { free (cv5->second_ticket.data); } + + free_cc_array (cv5->addresses); + free_cc_array (cv5->authdata); + + free (cv5); + + } else if (creds->data->version == cc_credentials_v4 && + creds->data->credentials.credentials_v4) { + free (creds->data->credentials.credentials_v4); + } + free ((cc_credentials_union *) creds->data); + } + free(creds); + } + return ccNoError; } @@ -36,381 +79,488 @@ krb5int_cc_credentials_compare(cc_credentials_t creds, return ccErrNotImplemented; } -/* - * CopyCC3DataArrayToK5 - * - copy and translate the null terminated arrays of data records - * used in k5 tickets - */ -int -copyCC3DataArrayToK5(cc_credentials_v5_t *ccCreds, krb5_creds *v5Creds, char whichArray) { - - switch (whichArray) { - case kAddressArray: - if (ccCreds->addresses == NULL) { - v5Creds->addresses = NULL; - } else { - - krb5_address **addrPtr, *addr; - cc_data **dataPtr, *data; - unsigned int numRecords = 0; - - /* Allocate the array of pointers: */ - for (dataPtr = ccCreds->addresses; *dataPtr != NULL; numRecords++, dataPtr++) {} - - v5Creds->addresses = (krb5_address **) malloc (sizeof(krb5_address *) * (numRecords + 1)); - if (v5Creds->addresses == NULL) - return ENOMEM; - - /* Fill in the array, allocating the address structures: */ - for (dataPtr = ccCreds->addresses, addrPtr = v5Creds->addresses; *dataPtr != NULL; addrPtr++, dataPtr++) { - - *addrPtr = (krb5_address *) malloc (sizeof(krb5_address)); - if (*addrPtr == NULL) - return ENOMEM; - data = *dataPtr; - addr = *addrPtr; - - addr->addrtype = data->type; - addr->magic = KV5M_ADDRESS; - addr->length = data->length; - addr->contents = (krb5_octet *) malloc (sizeof(krb5_octet) * addr->length); - if (addr->contents == NULL) - return ENOMEM; - memmove(addr->contents, data->data, addr->length); /* copy contents */ - } - - /* Write terminator: */ - *addrPtr = NULL; - } - break; - case kAuthDataArray: - if (ccCreds->authdata == NULL) { - v5Creds->authdata = NULL; - } else { - krb5_authdata **authPtr, *auth; - cc_data **dataPtr, *data; - unsigned int numRecords = 0; - - /* Allocate the array of pointers: */ - for (dataPtr = ccCreds->authdata; *dataPtr != NULL; numRecords++, dataPtr++) {} - - v5Creds->authdata = (krb5_authdata **) malloc (sizeof(krb5_authdata *) * (numRecords + 1)); - if (v5Creds->authdata == NULL) - return ENOMEM; - - /* Fill in the array, allocating the address structures: */ - for (dataPtr = ccCreds->authdata, authPtr = v5Creds->authdata; *dataPtr != NULL; authPtr++, dataPtr++) { - - *authPtr = (krb5_authdata *) malloc (sizeof(krb5_authdata)); - if (*authPtr == NULL) - return ENOMEM; - data = *dataPtr; - auth = *authPtr; - - auth->ad_type = data->type; - auth->magic = KV5M_AUTHDATA; - auth->length = data->length; - auth->contents = (krb5_octet *) malloc (sizeof(krb5_octet) * auth->length); - if (auth->contents == NULL) - return ENOMEM; - memmove(auth->contents, data->data, auth->length); /* copy contents */ - } - - /* Write terminator: */ - *authPtr = NULL; - } - break; +static krb5_error_code +copy_cc_array_to_addresses (krb5_context in_context, + cc_data **in_cc_array, + krb5_address ***out_addresses) +{ + krb5_error_code err = 0; + + if (in_cc_array == NULL) { + *out_addresses = NULL; + + } else { + unsigned int count, i; + krb5_address **addresses = NULL; + + /* get length of array */ + for (count = 0; in_cc_array[count]; count++); + addresses = (krb5_address **) malloc (sizeof (*addresses) * (count + 1)); + if (!addresses) { err = KRB5_CC_NOMEM; } + + for (i = 0; !err && i < count; i++) { + addresses[i] = (krb5_address *) malloc (sizeof (krb5_address)); + if (!addresses[i]) { err = KRB5_CC_NOMEM; } + + if (!err) { + addresses[i]->contents = (krb5_octet *) malloc (sizeof (krb5_octet) * + in_cc_array[i]->length); + if (!addresses[i]->contents) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + addresses[i]->magic = KV5M_ADDRESS; + addresses[i]->addrtype = in_cc_array[i]->type; + addresses[i]->length = in_cc_array[i]->length; + memcpy (addresses[i]->contents, + in_cc_array[i]->data, in_cc_array[i]->length); + } + } + + if (!err) { + addresses[i] = NULL; /* terminator */ + *out_addresses = addresses; + addresses = NULL; + } + + if (addresses) { krb5_free_addresses (in_context, addresses); } } - - return 0; + + return err; } -/* - * copyK5DataArrayToCC - * - analagous to above, but in the other direction - */ -int -copyK5DataArrayToCC3(krb5_creds *v5Creds, cc_credentials_v5_t * ccCreds, char whichArray) +static krb5_error_code +copy_cc_array_to_authdata (krb5_context in_context, + cc_data **in_cc_array, + krb5_authdata ***out_authdata) { - switch (whichArray) { - case kAddressArray: - if (v5Creds->addresses == NULL) { - ccCreds->addresses = NULL; - } else { - - krb5_address **addrPtr, *addr; - cc_data **dataPtr, *data; - unsigned int numRecords = 0; - - /* Allocate the array of pointers: */ - for (addrPtr = v5Creds->addresses; *addrPtr != NULL; numRecords++, addrPtr++) {} - - ccCreds->addresses = (cc_data **) malloc (sizeof(cc_data *) * (numRecords + 1)); - if (ccCreds->addresses == NULL) - return ENOMEM; - - /* Fill in the array, allocating the address structures: */ - for (dataPtr = ccCreds->addresses, addrPtr = v5Creds->addresses; *addrPtr != NULL; addrPtr++, dataPtr++) { - - *dataPtr = (cc_data *) malloc (sizeof(cc_data)); - if (*dataPtr == NULL) - return ENOMEM; - data = *dataPtr; - addr = *addrPtr; - - data->type = addr->addrtype; - data->length = addr->length; - data->data = malloc (sizeof(char) * data->length); - if (data->data == NULL) - return ENOMEM; - memmove(data->data, addr->contents, data->length); /* copy contents */ - } - - /* Write terminator: */ - *dataPtr = NULL; - } - break; - case kAuthDataArray: - if (v5Creds->authdata == NULL) { - ccCreds->authdata = NULL; - } else { - krb5_authdata **authPtr, *auth; - cc_data **dataPtr, *data; - unsigned int numRecords = 0; - - /* Allocate the array of pointers: */ - for (authPtr = v5Creds->authdata; *authPtr != NULL; numRecords++, authPtr++) {} - - ccCreds->authdata = (cc_data **) malloc (sizeof(cc_data *) * (numRecords + 1)); - if (ccCreds->authdata == NULL) - return ENOMEM; - - /* Fill in the array, allocating the address structures: */ - for (dataPtr = ccCreds->authdata, authPtr = v5Creds->authdata; *authPtr != NULL; authPtr++, dataPtr++) { - - *dataPtr = (cc_data *) malloc (sizeof(cc_data)); - if (*dataPtr == NULL) - return ENOMEM; - data = *dataPtr; - auth = *authPtr; - - data->type = auth->ad_type; - data->length = auth->length; - data->data = malloc (sizeof(char) * data->length); - if (data->data == NULL) - return ENOMEM; - memmove(data->data, auth->contents, data->length); /* copy contents */ - } + krb5_error_code err = 0; + + if (in_cc_array == NULL) { + *out_authdata = NULL; + + } else { + unsigned int count, i; + krb5_authdata **authdata = NULL; + + /* get length of array */ + for (count = 0; in_cc_array[count]; count++); + authdata = (krb5_authdata **) malloc (sizeof (*authdata) * (count + 1)); + if (!authdata) { err = KRB5_CC_NOMEM; } + + for (i = 0; !err && i < count; i++) { + authdata[i] = (krb5_authdata *) malloc (sizeof (krb5_authdata)); + if (!authdata[i]) { err = KRB5_CC_NOMEM; } + + if (!err) { + authdata[i]->contents = (krb5_octet *) malloc (sizeof (krb5_octet) * + in_cc_array[i]->length); + if (!authdata[i]->contents) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + authdata[i]->magic = KV5M_AUTHDATA; + authdata[i]->ad_type = in_cc_array[i]->type; + authdata[i]->length = in_cc_array[i]->length; + memcpy (authdata[i]->contents, + in_cc_array[i]->data, in_cc_array[i]->length); + } + } + + if (!err) { + authdata[i] = NULL; /* terminator */ + *out_authdata = authdata; + authdata = NULL; + } + + if (authdata) { krb5_free_authdata (in_context, authdata); } + } + + return err; +} - /* Write terminator: */ - *dataPtr = NULL; - } - break; +static krb5_error_code +copy_addresses_to_cc_array (krb5_context in_context, + krb5_address **in_addresses, + cc_data ***out_cc_array) +{ + krb5_error_code err = 0; + + if (in_addresses == NULL) { + *out_cc_array = NULL; + + } else { + unsigned int count, i; + cc_data **cc_array = NULL; + + /* get length of array */ + for (count = 0; in_addresses[count]; count++); + cc_array = (cc_data **) malloc (sizeof (*cc_array) * (count + 1)); + if (!cc_array) { err = KRB5_CC_NOMEM; } + + for (i = 0; !err && i < count; i++) { + cc_array[i] = (cc_data *) malloc (sizeof (cc_data)); + if (!cc_array[i]) { err = KRB5_CC_NOMEM; } + + if (!err) { + cc_array[i]->data = malloc (in_addresses[i]->length); + if (!cc_array[i]->data) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + cc_array[i]->type = in_addresses[i]->addrtype; + cc_array[i]->length = in_addresses[i]->length; + memcpy (cc_array[i]->data, in_addresses[i]->contents, in_addresses[i]->length); + } + } + + if (!err) { + cc_array[i] = NULL; /* terminator */ + *out_cc_array = cc_array; + cc_array = NULL; + } + + if (cc_array) { free_cc_array (cc_array); } } + + + return err; +} - return 0; +static krb5_error_code +copy_authdata_to_cc_array (krb5_context in_context, + krb5_authdata **in_authdata, + cc_data ***out_cc_array) +{ + krb5_error_code err = 0; + + if (in_authdata == NULL) { + *out_cc_array = NULL; + } else { + unsigned int count, i; + cc_data **cc_array = NULL; + + /* get length of array */ + for (count = 0; in_authdata[count]; count++); + cc_array = (cc_data **) malloc (sizeof (*cc_array) * (count + 1)); + if (!cc_array) { err = KRB5_CC_NOMEM; } + + for (i = 0; !err && i < count; i++) { + cc_array[i] = (cc_data *) malloc (sizeof (cc_data)); + if (!cc_array[i]) { err = KRB5_CC_NOMEM; } + + if (!err) { + cc_array[i]->data = malloc (in_authdata[i]->length); + if (!cc_array[i]->data) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + cc_array[i]->type = in_authdata[i]->ad_type; + cc_array[i]->length = in_authdata[i]->length; + memcpy (cc_array[i]->data, in_authdata[i]->contents, in_authdata[i]->length); + } + } + + if (!err) { + cc_array[i] = NULL; /* terminator */ + *out_cc_array = cc_array; + cc_array = NULL; + } + + if (cc_array) { free_cc_array (cc_array); } + } + + + return err; } + /* - * dupCC3toK5 + * copy_cc_credentials_to_krb5_creds * - allocate an empty k5 style ticket and copy info from the cc_creds ticket */ -krb5_error_code -dupCC3toK5(krb5_context context, cc_credentials_t src, krb5_creds *dest) +krb5_error_code +copy_cc_credentials_to_krb5_creds (krb5_context in_context, + cc_credentials_t in_credentials, + krb5_creds *out_creds) { - const cc_credentials_union *cu = src->data; - cc_credentials_v5_t *cv5; + krb5_error_code err = 0; + const cc_credentials_union *cred_union = in_credentials->data; + cc_credentials_v5_t *cv5 = NULL; krb5_int32 offset_seconds = 0, offset_microseconds = 0; - krb5_error_code err; - - if (cu->version != cc_credentials_v5) - return KRB5_CC_NOT_KTYPE; - - cv5 = cu->credentials.credentials_v5; - - /* - * allocate and copy - * copy all of those damn fields back - */ - err = krb5_parse_name(context, cv5->client, &(dest->client)); - err = krb5_parse_name(context, cv5->server, &(dest->server)); - if (err) - return err; /* parsename fails w/o krb5.ini for example */ - - /* copy keyblock */ - dest->keyblock.enctype = cv5->keyblock.type; - dest->keyblock.length = cv5->keyblock.length; - dest->keyblock.contents = (krb5_octet *)malloc(dest->keyblock.length); - memcpy(dest->keyblock.contents, cv5->keyblock.data, dest->keyblock.length); - - /* copy times */ + krb5_principal client = NULL; + krb5_principal server = NULL; + char *ticket_data = NULL; + char *second_ticket_data = NULL; + unsigned char *keyblock_contents = NULL; + krb5_address **addresses = NULL; + krb5_authdata **authdata = NULL; + + if (cred_union->version != cc_credentials_v5) { + err = KRB5_CC_NOT_KTYPE; + } else { + cv5 = cred_union->credentials.credentials_v5; + } + #if TARGET_OS_MAC - err = krb5_get_time_offsets(context, &offset_seconds, &offset_microseconds); - if (err) - return err; + if (!err) { + err = krb5_get_time_offsets (in_context, &offset_seconds, &offset_microseconds); + } #endif - dest->times.authtime = cv5->authtime + offset_seconds; - dest->times.starttime = cv5->starttime + offset_seconds; - dest->times.endtime = cv5->endtime + offset_seconds; - dest->times.renew_till = cv5->renew_till + offset_seconds; - dest->is_skey = cv5->is_skey; - dest->ticket_flags = cv5->ticket_flags; - - /* more branching fields */ - err = copyCC3DataArrayToK5(cv5, dest, kAddressArray); - if (err) - return err; - - /* first ticket */ - dest->ticket.length = cv5->ticket.length; - dest->ticket.data = (char *)malloc(cv5->ticket.length); - memcpy(dest->ticket.data, cv5->ticket.data, cv5->ticket.length); - - /* second ticket */ - dest->second_ticket.length = cv5->second_ticket.length; - (dest->second_ticket).data = ( char *)malloc(cv5->second_ticket.length); - memcpy(dest->second_ticket.data, cv5->second_ticket.data, cv5->second_ticket.length); - - /* zero out magic number */ - dest->magic = 0; - - /* authdata */ - err = copyCC3DataArrayToK5(cv5, dest, kAuthDataArray); - if (err) - return err; - - return 0; + + if (!err) { + err = krb5_parse_name (in_context, cv5->client, &client); + } + + if (!err) { + err = krb5_parse_name (in_context, cv5->server, &server); + } + + if (!err && cv5->keyblock.data) { + keyblock_contents = (unsigned char *) malloc (cv5->keyblock.length); + if (!keyblock_contents) { err = KRB5_CC_NOMEM; } + } + + if (!err && cv5->ticket.data) { + ticket_data = (char *) malloc (cv5->ticket.length); + if (!ticket_data) { err = KRB5_CC_NOMEM; } + } + + if (!err && cv5->second_ticket.data) { + second_ticket_data = (char *) malloc (cv5->second_ticket.length); + if (!second_ticket_data) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + /* addresses */ + err = copy_cc_array_to_addresses (in_context, cv5->addresses, &addresses); + } + + if (!err) { + /* authdata */ + err = copy_cc_array_to_authdata (in_context, cv5->authdata, &authdata); + } + + if (!err) { + /* principals */ + out_creds->client = client; + client = NULL; + out_creds->server = server; + server = NULL; + + /* copy keyblock */ + if (cv5->keyblock.data) { + memcpy (keyblock_contents, cv5->keyblock.data, cv5->keyblock.length); + } + out_creds->keyblock.enctype = cv5->keyblock.type; + out_creds->keyblock.length = cv5->keyblock.length; + out_creds->keyblock.contents = keyblock_contents; + keyblock_contents = NULL; + + /* copy times */ + out_creds->times.authtime = cv5->authtime + offset_seconds; + out_creds->times.starttime = cv5->starttime + offset_seconds; + out_creds->times.endtime = cv5->endtime + offset_seconds; + out_creds->times.renew_till = cv5->renew_till + offset_seconds; + out_creds->is_skey = cv5->is_skey; + out_creds->ticket_flags = cv5->ticket_flags; + + /* first ticket */ + if (cv5->ticket.data) { + memcpy(ticket_data, cv5->ticket.data, cv5->ticket.length); + } + out_creds->ticket.length = cv5->ticket.length; + out_creds->ticket.data = ticket_data; + ticket_data = NULL; + + /* second ticket */ + if (cv5->second_ticket.data) { + memcpy(second_ticket_data, cv5->second_ticket.data, cv5->second_ticket.length); + } + out_creds->second_ticket.length = cv5->second_ticket.length; + out_creds->second_ticket.data = second_ticket_data; + second_ticket_data = NULL; + + out_creds->addresses = addresses; + addresses = NULL; + + out_creds->authdata = authdata; + authdata = NULL; + + /* zero out magic number */ + out_creds->magic = 0; + } + + if (addresses) { krb5_free_addresses (in_context, addresses); } + if (authdata) { krb5_free_authdata (in_context, authdata); } + if (keyblock_contents) { free (keyblock_contents); } + if (ticket_data) { free (ticket_data); } + if (second_ticket_data) { free (second_ticket_data); } + if (client) { krb5_free_principal (in_context, client); } + if (server) { krb5_free_principal (in_context, server); } + + return err; } /* - * dupK5toCC3 + * copy_krb5_creds_to_cc_credentials * - analagous to above but in the reverse direction */ krb5_error_code -dupK5toCC3(krb5_context context, krb5_creds *src, cc_credentials_t *dest) +copy_krb5_creds_to_cc_credentials (krb5_context in_context, + krb5_creds *in_creds, + cc_credentials_t *out_credentials) { - cc_credentials_v5_t *c; - cc_credentials_union *cu; - cc_credentials_f *f; - int err; + krb5_error_code err = 0; + cc_credentials_t credentials = NULL; + cc_credentials_union *cred_union = NULL; + cc_credentials_f *functions = NULL; + cc_credentials_v5_t *cv5 = NULL; + char *client = NULL; + char *server = NULL; + unsigned char *ticket_data = NULL; + unsigned char *second_ticket_data = NULL; + unsigned char *keyblock_data = NULL; krb5_int32 offset_seconds = 0, offset_microseconds = 0; - cc_credentials_t creds = NULL; - - if (dest == NULL) - return KRB5_CC_NOMEM; - - /* allocate the cc_credentials_t */ - creds = (cc_credentials_t)malloc(sizeof(cc_credentials_d)); - if (!creds) { - err = KRB5_CC_NOMEM; - goto cleanup; + cc_data **cc_address_array = NULL; + cc_data **cc_authdata_array = NULL; + + if (out_credentials == NULL) { err = KRB5_CC_NOMEM; } + +#if TARGET_OS_MAC + if (!err) { + err = krb5_get_time_offsets (in_context, &offset_seconds, &offset_microseconds); } - - /* allocate the cred_union */ - creds->data = NULL; - creds->functions = NULL; -#ifdef TARGET_OS_MAC - creds->otherFunctions = NULL; #endif - f = (cc_credentials_f *)malloc(sizeof(cc_credentials_f)); - if (!f) { - err = KRB5_CC_NOMEM; - goto cleanup; + + if (!err) { + credentials = (cc_credentials_t) malloc (sizeof (*credentials)); + if (!credentials) { err = KRB5_CC_NOMEM; } } - creds->functions = f; - - cu = (cc_credentials_union *)malloc(sizeof(cc_credentials_union)); - if (!creds->data) { - err = KRB5_CC_NOMEM; - goto cleanup; + + if (!err) { + functions = (cc_credentials_f *) malloc (sizeof (*functions)); + if (!functions) { err = KRB5_CC_NOMEM; } } - creds->data = cu; - - f->release = krb5int_cc_credentials_release; - f->compare = krb5int_cc_credentials_compare; - - cu->version = cc_credentials_v5; - - c = (cc_credentials_v5_t*)malloc(sizeof(cc_credentials_v5_t)); - if (!c) { - err = KRB5_CC_NOMEM; - goto cleanup; + + if (!err) { + cred_union = (cc_credentials_union *) malloc (sizeof (*cred_union)); + if (!cred_union) { err = KRB5_CC_NOMEM; } } - cu->credentials.credentials_v5 = c; - - /* convert krb5 principals to flat principals */ - err = krb5_unparse_name(context, src->client, &(c->client)); - if (err) - goto cleanup; - - err = krb5_unparse_name(context, src->server, &(c->server)); - if (err) - goto cleanup; - - /* copy more fields */ - c->keyblock.type = src->keyblock.enctype; - c->keyblock.length = src->keyblock.length; - - if (src->keyblock.contents != NULL) { - c->keyblock.data = (unsigned char *)malloc(src->keyblock.length); - memcpy(c->keyblock.data, src->keyblock.contents, src->keyblock.length); - } else { - c->keyblock.data = NULL; + + if (!err) { + cv5 = (cc_credentials_v5_t *) malloc (sizeof (*cv5)); + if (!cv5) { err = KRB5_CC_NOMEM; } } - -#if TARGET_OS_MAC - err = krb5_get_time_offsets(context, &offset_seconds, &offset_microseconds); - if (err) - goto cleanup; -#endif - c->authtime = src->times.authtime - offset_seconds; - c->starttime = src->times.starttime - offset_seconds; - c->endtime = src->times.endtime - offset_seconds; - c->renew_till = src->times.renew_till - offset_seconds; - c->is_skey = src->is_skey; - c->ticket_flags = src->ticket_flags; - - err = copyK5DataArrayToCC3(src, c, kAddressArray); - if (err) - goto cleanup; - - c->ticket.length = src->ticket.length; - if (src->ticket.data != NULL) { - c->ticket.data = (unsigned char *)malloc(src->ticket.length); - memcpy(c->ticket.data, src->ticket.data, src->ticket.length); - } else { - c->ticket.data = NULL; + + if (!err) { + err = krb5_unparse_name (in_context, in_creds->client, &client); } - - c->second_ticket.length = src->second_ticket.length; - if (src->second_ticket.data != NULL) { - c->second_ticket.data = (unsigned char *)malloc(src->second_ticket.length); - memcpy(c->second_ticket.data, src->second_ticket.data, src->second_ticket.length); - } else { - c->second_ticket.data = NULL; + + if (!err) { + err = krb5_unparse_name (in_context, in_creds->server, &server); } - - err = copyK5DataArrayToCC3(src, c, kAuthDataArray); - if (err) - goto cleanup; - - *dest = creds; - return 0; - - cleanup: - if (creds) { - if (creds->functions) - free((void *)creds->functions); - if (creds->data) { - if (creds->data->credentials.credentials_v5) - free(creds->data->credentials.credentials_v5); - free((void *)creds->data); - } - free(creds); + + if (!err && in_creds->keyblock.contents) { + keyblock_data = (unsigned char *) malloc (in_creds->keyblock.length); + if (!keyblock_data) { err = KRB5_CC_NOMEM; } } - + + if (!err && in_creds->ticket.data) { + ticket_data = (unsigned char *) malloc (in_creds->ticket.length); + if (!ticket_data) { err = KRB5_CC_NOMEM; } + } + + if (!err && in_creds->second_ticket.data) { + second_ticket_data = (unsigned char *) malloc (in_creds->second_ticket.length); + if (!second_ticket_data) { err = KRB5_CC_NOMEM; } + } + + if (!err) { + err = copy_addresses_to_cc_array (in_context, in_creds->addresses, &cc_address_array); + } + + if (!err) { + err = copy_authdata_to_cc_array (in_context, in_creds->authdata, &cc_authdata_array); + } + + if (!err) { + /* principals */ + cv5->client = client; + client = NULL; + cv5->server = server; + server = NULL; + + /* copy more fields */ + if (in_creds->keyblock.contents) { + memcpy(keyblock_data, in_creds->keyblock.contents, in_creds->keyblock.length); + } + cv5->keyblock.type = in_creds->keyblock.enctype; + cv5->keyblock.length = in_creds->keyblock.length; + cv5->keyblock.data = keyblock_data; + keyblock_data = NULL; + + cv5->authtime = in_creds->times.authtime - offset_seconds; + cv5->starttime = in_creds->times.starttime - offset_seconds; + cv5->endtime = in_creds->times.endtime - offset_seconds; + cv5->renew_till = in_creds->times.renew_till - offset_seconds; + cv5->is_skey = in_creds->is_skey; + cv5->ticket_flags = in_creds->ticket_flags; + + if (in_creds->ticket.data) { + memcpy (ticket_data, in_creds->ticket.data, in_creds->ticket.length); + } + cv5->ticket.length = in_creds->ticket.length; + cv5->ticket.data = ticket_data; + ticket_data = NULL; + + if (in_creds->second_ticket.data) { + memcpy (second_ticket_data, in_creds->second_ticket.data, in_creds->second_ticket.length); + } + cv5->second_ticket.length = in_creds->second_ticket.length; + cv5->second_ticket.data = second_ticket_data; + second_ticket_data = NULL; + + cv5->addresses = cc_address_array; + cc_address_array = NULL; + + cv5->authdata = cc_authdata_array; + cc_authdata_array = NULL; + + /* Set up the structures to return to the caller */ + cred_union->version = cc_credentials_v5; + cred_union->credentials.credentials_v5 = cv5; + cv5 = NULL; + + credentials->data = cred_union; + cred_union = NULL; + + functions->release = krb5int_cc_credentials_release; + functions->compare = krb5int_cc_credentials_compare; + credentials->functions = functions; + functions = NULL; +#ifdef TARGET_OS_MAC + credentials->otherFunctions = NULL; +#endif + + *out_credentials = credentials; + credentials = NULL; + } + + if (cc_address_array) { free_cc_array (cc_address_array); } + if (cc_authdata_array) { free_cc_array (cc_authdata_array); } + if (keyblock_data) { free (keyblock_data); } + if (ticket_data) { free (ticket_data); } + if (second_ticket_data) { free (second_ticket_data); } + if (client) { krb5_free_unparsed_name (in_context, client); } + if (server) { krb5_free_unparsed_name (in_context, server); } + if (cv5) { free (cv5); } + if (cred_union) { free (cred_union); } + if (functions) { free (functions); } + if (credentials) { free (credentials); } + return err; } #else /* !USE_CCAPI_V3 */ @@ -739,14 +889,14 @@ static void deep_free_cc_data (cc_data data) static void deep_free_cc_data_array (cc_data** data) { - unsigned int index; + unsigned int i; if (data == NULL) return; - for (index = 0; data [index] != NULL; index++) { - deep_free_cc_data (*(data [index])); - free (data [index]); + for (i = 0; data [i] != NULL; i++) { + deep_free_cc_data (*(data [i])); + free (data [i]); } free (data); diff --git a/src/lib/krb5/ccache/ccapi/stdcc_util.h b/src/lib/krb5/ccache/ccapi/stdcc_util.h index 7476313dfa..257eb8dcc5 100644 --- a/src/lib/krb5/ccache/ccapi/stdcc_util.h +++ b/src/lib/krb5/ccache/ccapi/stdcc_util.h @@ -21,14 +21,15 @@ /* protoypes for private functions declared in stdcc_util.c */ #ifdef USE_CCAPI_V3 -krb5_error_code dupCC3toK5(krb5_context context, cc_credentials_t src, krb5_creds *dest); -krb5_error_code dupK5toCC3(krb5_context context, krb5_creds *src, cc_credentials_t *dest); -cc_int32 krb5int_cc_credentials_release(cc_credentials_t creds); -cc_int32 krb5int_cc_credentials_compare(cc_credentials_t creds, - cc_credentials_t compare_to, - cc_uint32* equal); -int copyCC3DataArrayToK5(cc_credentials_v5_t *ccCreds, krb5_creds *v5Creds, char whichArray); -int copyK5DataArrayToCC3(krb5_creds *v5Creds, cc_credentials_v5_t * ccCreds, char whichArray); +krb5_error_code +copy_cc_credentials_to_krb5_creds (krb5_context in_context, + cc_credentials_t in_credentials, + krb5_creds *out_creds); +krb5_error_code +copy_krb5_creds_to_cc_credentials (krb5_context in_context, + krb5_creds *in_creds, + cc_credentials_t *out_credentials); + #else int copyCCDataArrayToK5(cc_creds *cc, krb5_creds *kc, char whichArray); int copyK5DataArrayToCC(krb5_creds *kc, cc_creds *cc, char whichArray); diff --git a/src/plugins/kdb/db2/Makefile.in b/src/plugins/kdb/db2/Makefile.in index d790637018..897d559117 100644 --- a/src/plugins/kdb/db2/Makefile.in +++ b/src/plugins/kdb/db2/Makefile.in @@ -130,8 +130,8 @@ kdb_db2.so kdb_db2.po $(OUTPRE)kdb_db2.$(OBJEXT): $(BUILDTOP)/include/autoconf.h $(SRCTOP)/include/k5-thread.h $(SRCTOP)/include/kdb.h \ $(SRCTOP)/include/krb5.h $(SRCTOP)/include/krb5/locate_plugin.h \ $(SRCTOP)/include/port-sockets.h $(SRCTOP)/include/socket-utils.h \ - $(SRCTOP)/lib/kdb/kdb5.h kdb_compat.h kdb_db2.c kdb_db2.h \ - kdb_xdr.h policy_db.h + $(SRCTOP)/lib/kdb/kdb5.h kdb_db2.c kdb_db2.h kdb_xdr.h \ + policy_db.h pol_xdr.so pol_xdr.po $(OUTPRE)pol_xdr.$(OBJEXT): $(BUILDTOP)/include/autoconf.h \ $(BUILDTOP)/include/gssapi/gssapi.h $(BUILDTOP)/include/gssrpc/auth.h \ $(BUILDTOP)/include/gssrpc/auth_gss.h $(BUILDTOP)/include/gssrpc/auth_unix.h \