diff options
26 files changed, 2193 insertions, 5584 deletions
diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 85adb41..6208105 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 1f0444c..0050893 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 de5fe7c..9e6d46d 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 07e9b8e..c442a88 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 0a92ebf..255cf2a 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 5d88d46..4bcfc04 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 6ff113a..eb0ea52 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 2c73983..62f8d8d 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 48abb33..b2433cb 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 <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <CredentialsCache.h>
-#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; i<count; i++ ) {
- len += creds->addresses[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; i<count; i++ ) {
- len += creds->authdata[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 <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <CredentialsCache.h> +#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; i<count; i++ ) { + len += creds->addresses[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; i<count; i++ ) { + len += creds->authdata[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 789fc87..fa051e9 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:
- * <size of header block (header_len)>
- * <size of *entire* message, including previous field (flat_len)>
- * <message type (type)>
- * <type specific header (header)>
- * <magic number (magic)>
- * <data blob 1 length>
- * <data blob 1>
- * <data blob 2 length>
- * <data blob 2>
- * ...
- * <magic number (magic)>
- *
- * 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 <stdlib.h>
-#include <memory.h>
-#include <stdio.h>
-#include <string.h>
-
-/**
- * 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: + * <size of header block (header_len)> + * <size of *entire* message, including previous field (flat_len)> + * <message type (type)> + * <type specific header (header)> + * <magic number (magic)> + * <data blob 1 length> + * <data blob 1> + * <data blob 2 length> + * <data blob 2> + * ... + * <magic number (magic)> + * + * 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 <stdlib.h> +#include <memory.h> +#include <stdio.h> +#include <string.h> + +/** + * 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 95c4fe7..baad48f 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 5505bf2..b736627 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 14b7ae2..93636da 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 79b9a7f..1682811 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 ea15e54..0000000 --- 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 <CredentialsCache.h>"; - 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 <Kerberos/kipc_client.h>"; - rLen = 34; - rLoc = 1240; - rType = 0; - vrLen = 891; - vrLoc = 724; - }; - A1E70ED70A38CCB6007BE3E3 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = A1E70DE40A38C6FD007BE3E3 /* kipc_client.c */; - name = "#include <Kerberos/kipc_client.h>"; - 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 <Kerberos/KerberosDebug.h>"; - 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 = "<absolute>"; - }; - 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 1983707..0000000 --- a/src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.perspective +++ /dev/null @@ -1,1567 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>ActivePerspectiveName</key> - <string>Project</string> - <key>AllowedModules</key> - <array> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Name</key> - <string>Groups and Files Outline View</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Name</key> - <string>Editor</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCTaskListModule</string> - <key>Name</key> - <string>Task List</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCDetailModule</string> - <key>Name</key> - <string>File and Smart Group Detail Viewer</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXBuildResultsModule</string> - <key>Name</key> - <string>Detailed Build Results Viewer</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXProjectFindModule</string> - <key>Name</key> - <string>Project Batch Find Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXRunSessionModule</string> - <key>Name</key> - <string>Run Log</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXBookmarksModule</string> - <key>Name</key> - <string>Bookmarks Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXClassBrowserModule</string> - <key>Name</key> - <string>Class Browser</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXCVSModule</string> - <key>Name</key> - <string>Source Code Control Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXDebugBreakpointsModule</string> - <key>Name</key> - <string>Debug Breakpoints Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>XCDockableInspector</string> - <key>Name</key> - <string>Inspector</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>n</string> - <key>Module</key> - <string>PBXOpenQuicklyModule</string> - <key>Name</key> - <string>Open Quickly Tool</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXDebugSessionModule</string> - <key>Name</key> - <string>Debugger</string> - </dict> - <dict> - <key>BundleLoadPath</key> - <string></string> - <key>MaxInstances</key> - <string>1</string> - <key>Module</key> - <string>PBXDebugCLIModule</string> - <key>Name</key> - <string>Debug Console</string> - </dict> - </array> - <key>Description</key> - <string>AIODescriptionKey</string> - <key>DockingSystemVisible</key> - <false/> - <key>Extension</key> - <string>perspective</string> - <key>FavBarConfig</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>A1E70E750A38CA08007BE3E3</string> - <key>XCBarModuleItemNames</key> - <dict/> - <key>XCBarModuleItems</key> - <array/> - </dict> - <key>FirstTimeWindowDisplayed</key> - <false/> - <key>Identifier</key> - <string>com.apple.perspectives.project.default</string> - <key>MajorVersion</key> - <integer>33</integer> - <key>MinorVersion</key> - <integer>0</integer> - <key>Name</key> - <string>All-In-One</string> - <key>Notifications</key> - <array> - <dict> - <key>XCObserverAutoDisconnectKey</key> - <true/> - <key>XCObserverDefintionKey</key> - <dict/> - <key>XCObserverFactoryKey</key> - <string>XCPerspectivesSpecificationIdentifier</string> - <key>XCObserverGUIDKey</key> - <string>XCObserverProjectIdentifier</string> - <key>XCObserverNotificationKey</key> - <string>PBXStatusBuildStateMessageNotification</string> - <key>XCObserverTargetKey</key> - <string>XCMainBuildResultsModuleGUID</string> - <key>XCObserverTriggerKey</key> - <string>awakenModuleWithObserver:</string> - <key>XCObserverValidationKey</key> - <dict/> - </dict> - </array> - <key>OpenEditors</key> - <array/> - <key>PerspectiveWidths</key> - <array> - <integer>1340</integer> - <integer>1340</integer> - <integer>1340</integer> - </array> - <key>Perspectives</key> - <array> - <dict> - <key>ChosenToolbarItems</key> - <array> - <string>XCToolbarPerspectiveControl</string> - <string>NSToolbarSeparatorItem</string> - <string>active-target-popup</string> - <string>action</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>buildOrClean</string> - <string>build-and-runOrDebug</string> - <string>com.apple.ide.PBXToolbarStopButton</string> - <string>get-info</string> - <string>toggle-editor</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>com.apple.pbx.toolbar.searchfield</string> - </array> - <key>ControllerClassBaseName</key> - <string></string> - <key>IconName</key> - <string>WindowOfProject</string> - <key>Identifier</key> - <string>perspective.project</string> - <key>IsVertical</key> - <false/> - <key>Layout</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C37FBAC04509CD000000102</string> - <string>1C37FAAC04509CD000000102</string> - <string>1C08E77C0454961000C914BD</string> - <string>1C37FABC05509CD000000102</string> - <string>1C37FABC05539CD112110102</string> - <string>E2644B35053B69B200211256</string> - <string>1C37FABC04509CD000100104</string> - <string>1CC0EA4004350EF90044410B</string> - <string>1CC0EA4004350EF90041110B</string> - <string>1C77FABC04509CD000000102</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>1CA23ED40692098700951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>yes</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>268</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>08FB7794FE84155DC02AAC07</string> - <string>A1E70CFF0A38B5BB007BE3E3</string> - <string>A1E70D110A38B5BB007BE3E3</string> - <string>A1E70D7E0A38BAC5007BE3E3</string> - <string>A1E70D180A38B5BB007BE3E3</string> - <string>A1E70D270A38B5BB007BE3E3</string> - <string>A1E70D2B0A38B5BB007BE3E3</string> - <string>A1E70D390A38B5BB007BE3E3</string> - <string>1C37FBAC04509CD000000102</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>24</integer> - <integer>19</integer> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {268, 841}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <false/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {285, 859}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>268</real> - </array> - <key>RubberWindowFrame</key> - <string>170 278 1340 900 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>285pt</string> - </dict> - <dict> - <key>Dock</key> - <array> - <dict> - <key>BecomeActive</key> - <true/> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>A1E70DF50A38C765007BE3E3</string> - <key>PBXProjectModuleLabel</key> - <string>generic_lists.c</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>A1E70DF60A38C765007BE3E3</string> - <key>PBXProjectModuleLabel</key> - <string>generic_lists.c</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>A1E710F40A3A253F007BE3E3</string> - <key>history</key> - <array> - <string>A1E70DF90A38C765007BE3E3</string> - <string>A1E70DFA0A38C765007BE3E3</string> - <string>A1E70DFB0A38C765007BE3E3</string> - <string>A1E70E010A38C765007BE3E3</string> - <string>A1E70E020A38C765007BE3E3</string> - <string>A1E70E090A38C765007BE3E3</string> - <string>A1E70E0A0A38C765007BE3E3</string> - <string>A1E70E0B0A38C765007BE3E3</string> - <string>A1E70E0C0A38C765007BE3E3</string> - <string>A1E70E3D0A38C78C007BE3E3</string> - <string>A1E70E4A0A38C7BE007BE3E3</string> - <string>A1E70E520A38C9FD007BE3E3</string> - <string>A1E70E530A38C9FD007BE3E3</string> - <string>A1E70E770A38CA55007BE3E3</string> - <string>A1E70EB50A38CB4D007BE3E3</string> - <string>A1E70ED70A38CCB6007BE3E3</string> - <string>A1E70EFE0A38CD66007BE3E3</string> - <string>A1E70F0F0A38CE21007BE3E3</string> - <string>A1E70F9C0A38D41E007BE3E3</string> - <string>A1E70F9D0A38D41E007BE3E3</string> - <string>A1E70FC60A38D560007BE3E3</string> - <string>A1E70FD80A38D573007BE3E3</string> - <string>A1E70FFA0A38D806007BE3E3</string> - <string>A1E70FFC0A38D806007BE3E3</string> - <string>A1E7100C0A38D888007BE3E3</string> - <string>A1E7100D0A38D888007BE3E3</string> - <string>A1E710840A3A1CFB007BE3E3</string> - <string>A1E7108D0A3A1D06007BE3E3</string> - <string>A1E710930A3A1D22007BE3E3</string> - <string>A1E710940A3A1D22007BE3E3</string> - <string>A1E710BC0A3A2415007BE3E3</string> - <string>A1E710EA0A3A2521007BE3E3</string> - <string>A1E710EB0A3A2521007BE3E3</string> - <string>A1E710EC0A3A2521007BE3E3</string> - <string>A1E710D10A3A2456007BE3E3</string> - </array> - <key>prevStack</key> - <array> - <string>A1E70E100A38C765007BE3E3</string> - <string>A1E70E110A38C765007BE3E3</string> - <string>A1E70E120A38C765007BE3E3</string> - <string>A1E70E130A38C765007BE3E3</string> - <string>A1E70E140A38C765007BE3E3</string> - <string>A1E70E150A38C765007BE3E3</string> - <string>A1E70E160A38C765007BE3E3</string> - <string>A1E70E180A38C765007BE3E3</string> - <string>A1E70E1B0A38C765007BE3E3</string> - <string>A1E70E1E0A38C765007BE3E3</string> - <string>A1E70E1F0A38C765007BE3E3</string> - <string>A1E70E200A38C765007BE3E3</string> - <string>A1E70E250A38C765007BE3E3</string> - <string>A1E70E260A38C765007BE3E3</string> - <string>A1E70E290A38C765007BE3E3</string> - <string>A1E70E2A0A38C765007BE3E3</string> - <string>A1E70E2B0A38C765007BE3E3</string> - <string>A1E70E2D0A38C765007BE3E3</string> - <string>A1E70E2E0A38C765007BE3E3</string> - <string>A1E70E380A38C778007BE3E3</string> - <string>A1E70E410A38C78C007BE3E3</string> - <string>A1E70E450A38C791007BE3E3</string> - <string>A1E70E560A38C9FD007BE3E3</string> - <string>A1E70E580A38C9FD007BE3E3</string> - <string>A1E70E6F0A38CA08007BE3E3</string> - <string>A1E70E7D0A38CA55007BE3E3</string> - <string>A1E70EAB0A38CB24007BE3E3</string> - <string>A1E70EC30A38CC14007BE3E3</string> - <string>A1E70EE20A38CCD6007BE3E3</string> - <string>A1E70FFF0A38D806007BE3E3</string> - <string>A1E710110A38D888007BE3E3</string> - <string>A1E710140A38D888007BE3E3</string> - <string>A1E710BE0A3A2415007BE3E3</string> - <string>A1E710C80A3A2441007BE3E3</string> - <string>A1E710D30A3A2456007BE3E3</string> - <string>A1E710E10A3A247D007BE3E3</string> - <string>A1E710E20A3A247D007BE3E3</string> - <string>A1E710ED0A3A2521007BE3E3</string> - <string>A1E710EE0A3A2521007BE3E3</string> - <string>A1E710EF0A3A2521007BE3E3</string> - </array> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <true/> - <key>XCSharingToken</key> - <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {1050, 553}}</string> - <key>RubberWindowFrame</key> - <string>170 278 1340 900 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>553pt</string> - </dict> - <dict> - <key>Proportion</key> - <string>301pt</string> - <key>Tabs</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA23EDF0692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>Detail</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 27}, {1050, 274}}</string> - <key>RubberWindowFrame</key> - <string>170 278 1340 900 0 0 1920 1178 </string> - </dict> - <key>Module</key> - <string>XCDetailModule</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA23EE00692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>Project Find</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 27}, {1050, 274}}</string> - </dict> - <key>Module</key> - <string>PBXProjectFindModule</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA23EE10692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>SCM Results</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 31}, {603, 297}}</string> - </dict> - <key>Module</key> - <string>PBXCVSModule</string> - </dict> - </array> - </dict> - </array> - <key>Proportion</key> - <string>1050pt</string> - </dict> - </array> - <key>Name</key> - <string>Project</string> - <key>ServiceClasses</key> - <array> - <string>XCModuleDock</string> - <string>PBXSmartGroupTreeModule</string> - <string>XCModuleDock</string> - <string>PBXNavigatorGroup</string> - <string>XCDockableTabModule</string> - <string>XCDetailModule</string> - <string>PBXProjectFindModule</string> - <string>PBXCVSModule</string> - </array> - <key>TableOfContents</key> - <array> - <string>A1E710B00A3A22FE007BE3E3</string> - <string>1CA23ED40692098700951B8B</string> - <string>A1E710B10A3A22FE007BE3E3</string> - <string>A1E70DF50A38C765007BE3E3</string> - <string>A1E710B20A3A22FE007BE3E3</string> - <string>1CA23EDF0692099D00951B8B</string> - <string>1CA23EE00692099D00951B8B</string> - <string>1CA23EE10692099D00951B8B</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.default</string> - </dict> - <dict> - <key>ChosenToolbarItems</key> - <array> - <string>XCToolbarPerspectiveControl</string> - <string>NSToolbarSeparatorItem</string> - <string>active-target-popup</string> - <string>active-executable-popup</string> - <string>active-buildstyle-popup</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>build</string> - <string>clean</string> - <string>NSToolbarSeparatorItem</string> - <string>run</string> - <string>debug</string> - </array> - <key>ControllerClassBaseName</key> - <string></string> - <key>IconName</key> - <string>BuildTabIcon</string> - <key>Identifier</key> - <string>perspective.build</string> - <key>IsVertical</key> - <false/> - <key>Layout</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array/> - <key>PBXProjectModuleGUID</key> - <string>1CA23EE50692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>yes</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>184</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array/> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {184, 841}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <false/> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {201, 859}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>184</real> - </array> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>201pt</string> - </dict> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>A1E70DF50A38C765007BE3E3</string> - <key>PBXProjectModuleLabel</key> - <string>CredentialsCache.h</string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>A1E70DF60A38C765007BE3E3</string> - <key>PBXProjectModuleLabel</key> - <string>CredentialsCache.h</string> - <key>_historyCapacity</key> - <integer>0</integer> - <key>bookmark</key> - <string>A1E710F50A3A253F007BE3E3</string> - <key>history</key> - <array> - <string>A1E70DF70A38C765007BE3E3</string> - <string>A1E70DF80A38C765007BE3E3</string> - <string>A1E70DF90A38C765007BE3E3</string> - <string>A1E70DFA0A38C765007BE3E3</string> - <string>A1E70DFB0A38C765007BE3E3</string> - <string>A1E70E010A38C765007BE3E3</string> - <string>A1E70E020A38C765007BE3E3</string> - <string>A1E70E060A38C765007BE3E3</string> - <string>A1E70E090A38C765007BE3E3</string> - <string>A1E70E0A0A38C765007BE3E3</string> - <string>A1E70E0B0A38C765007BE3E3</string> - <string>A1E70E0C0A38C765007BE3E3</string> - <string>A1E70E3D0A38C78C007BE3E3</string> - <string>A1E70E430A38C791007BE3E3</string> - <string>A1E70E770A38CA55007BE3E3</string> - <string>A1E70ECB0A38CC4C007BE3E3</string> - <string>A1E70F440A38D252007BE3E3</string> - <string>A1E70F450A38D252007BE3E3</string> - <string>A1E70F8B0A38D3B4007BE3E3</string> - <string>A1E70FC60A38D560007BE3E3</string> - <string>A1E70FC80A38D560007BE3E3</string> - <string>A1E70FC90A38D560007BE3E3</string> - <string>A1E70FEE0A38D7C0007BE3E3</string> - <string>A1E70FEF0A38D7C0007BE3E3</string> - <string>A1E70FF00A38D7C0007BE3E3</string> - <string>A1E70FFC0A38D806007BE3E3</string> - <string>A1E7100D0A38D888007BE3E3</string> - <string>A1E7103C0A38DE0B007BE3E3</string> - <string>A1E7105A0A39ED89007BE3E3</string> - <string>A1E710890A3A1D04007BE3E3</string> - <string>A1E7109C0A3A1D2B007BE3E3</string> - <string>A1E710CA0A3A244D007BE3E3</string> - <string>A1E710CB0A3A244D007BE3E3</string> - <string>A1E710D80A3A2465007BE3E3</string> - <string>A1E710E30A3A247D007BE3E3</string> - </array> - <key>prevStack</key> - <array> - <string>A1E70E100A38C765007BE3E3</string> - <string>A1E70E110A38C765007BE3E3</string> - <string>A1E70E120A38C765007BE3E3</string> - <string>A1E70E130A38C765007BE3E3</string> - <string>A1E70E140A38C765007BE3E3</string> - <string>A1E70E150A38C765007BE3E3</string> - <string>A1E70E160A38C765007BE3E3</string> - <string>A1E70E170A38C765007BE3E3</string> - <string>A1E70E180A38C765007BE3E3</string> - <string>A1E70E1E0A38C765007BE3E3</string> - <string>A1E70E1F0A38C765007BE3E3</string> - <string>A1E70E250A38C765007BE3E3</string> - <string>A1E70E260A38C765007BE3E3</string> - <string>A1E70E290A38C765007BE3E3</string> - <string>A1E70E2A0A38C765007BE3E3</string> - <string>A1E70E2B0A38C765007BE3E3</string> - <string>A1E70E2D0A38C765007BE3E3</string> - <string>A1E70E2E0A38C765007BE3E3</string> - <string>A1E70E380A38C778007BE3E3</string> - <string>A1E70E410A38C78C007BE3E3</string> - <string>A1E70E450A38C791007BE3E3</string> - <string>A1E70E560A38C9FD007BE3E3</string> - <string>A1E70E580A38C9FD007BE3E3</string> - <string>A1E70E7D0A38CA55007BE3E3</string> - <string>A1E70EAB0A38CB24007BE3E3</string> - <string>A1E70EC30A38CC14007BE3E3</string> - <string>A1E70EE20A38CCD6007BE3E3</string> - <string>A1E70FCD0A38D560007BE3E3</string> - <string>A1E70FFF0A38D806007BE3E3</string> - <string>A1E710140A38D888007BE3E3</string> - <string>A1E710400A38DE0B007BE3E3</string> - <string>A1E70E6F0A38CA08007BE3E3</string> - <string>A1E710CD0A3A244D007BE3E3</string> - <string>A1E710E20A3A247D007BE3E3</string> - </array> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <true/> - <key>XCSharingToken</key> - <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {1134, 480}}</string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>480pt</string> - </dict> - <dict> - <key>Proportion</key> - <string>374pt</string> - <key>Tabs</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>XCMainBuildResultsModuleGUID</string> - <key>PBXProjectModuleLabel</key> - <string>Build</string> - <key>XCBuildResultsTrigger_Collapse</key> - <integer>1021</integer> - <key>XCBuildResultsTrigger_Open</key> - <integer>1010</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{10, 27}, {1134, 347}}</string> - </dict> - <key>Module</key> - <string>PBXBuildResultsModule</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>LauncherConfigVersion</key> - <string>3</string> - <key>PBXProjectModuleGUID</key> - <string>1CA23EE80692099D00951B8B</string> - <key>PBXProjectModuleLabel</key> - <string>Run</string> - <key>Runner</key> - <dict> - <key>HorizontalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {365, 167}}</string> - <string>{{0, 176}, {365, 267}}</string> - </array> - </dict> - <key>VerticalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {405, 443}}</string> - <string>{{414, 0}, {514, 443}}</string> - </array> - </dict> - </dict> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {0, 0}}</string> - </dict> - <key>Module</key> - <string>PBXRunSessionModule</string> - </dict> - </array> - </dict> - </array> - <key>Proportion</key> - <string>1134pt</string> - </dict> - </array> - <key>Name</key> - <string>Build</string> - <key>ServiceClasses</key> - <array> - <string>XCModuleDock</string> - <string>PBXSmartGroupTreeModule</string> - <string>XCModuleDock</string> - <string>PBXNavigatorGroup</string> - <string>XCDockableTabModule</string> - <string>PBXBuildResultsModule</string> - <string>PBXRunSessionModule</string> - <string>XCConsole</string> - </array> - <key>TableOfContents</key> - <array> - <string>A1E710B40A3A22FF007BE3E3</string> - <string>1CA23EE50692099D00951B8B</string> - <string>A1E710B50A3A22FF007BE3E3</string> - <string>A1E70DF50A38C765007BE3E3</string> - <string>A1E710B60A3A22FF007BE3E3</string> - <string>XCMainBuildResultsModuleGUID</string> - <string>1CA23EE80692099D00951B8B</string> - <string>A1E710B70A3A22FF007BE3E3</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.buildAndRun</string> - </dict> - <dict> - <key>ChosenToolbarItems</key> - <array> - <string>XCToolbarPerspectiveControl</string> - <string>NSToolbarSeparatorItem</string> - <string>build-and-debug</string> - <string>debug</string> - <string>NSToolbarFlexibleSpaceItem</string> - <string>debugger-fix-and-continue</string> - <string>debugger-restart-executable</string> - <string>debugger-pause</string> - <string>debugger-continue</string> - <string>debugger-step-over</string> - <string>debugger-step-into</string> - <string>debugger-step-out</string> - <string>debugger-step-instruction</string> - <string>NSToolbarFlexibleSpaceItem</string> - </array> - <key>ControllerClassBaseName</key> - <string>PBXDebugSessionModule</string> - <key>IconName</key> - <string>DebugTabIcon</string> - <key>Identifier</key> - <string>perspective.debug</string> - <key>IsVertical</key> - <integer>1</integer> - <key>Layout</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CCC7628064C1048000F2A68</string> - <key>PBXProjectModuleLabel</key> - <string>Debugger Console</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {810, 0}}</string> - </dict> - <key>Module</key> - <string>PBXDebugCLIModule</string> - <key>Proportion</key> - <string>0%</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>Debugger</key> - <dict> - <key>HorizontalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {395, 213}}</string> - <string>{{395, 0}, {415, 213}}</string> - </array> - </dict> - <key>VerticalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {810, 213}}</string> - <string>{{0, 213}, {810, 225}}</string> - </array> - </dict> - </dict> - <key>LauncherConfigVersion</key> - <string>8</string> - <key>PBXProjectModuleGUID</key> - <string>1CCC7629064C1048000F2A68</string> - <key>PBXProjectModuleLabel</key> - <string>Debug</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>DebugConsoleDrawerSize</key> - <string>{100, 120}</string> - <key>DebugConsoleVisible</key> - <string>None</string> - <key>DebugConsoleWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> - <key>DebugSTDIOWindowFrame</key> - <string>{{200, 200}, {500, 300}}</string> - <key>Frame</key> - <string>{{0, 7}, {810, 438}}</string> - </dict> - <key>Module</key> - <string>PBXDebugSessionModule</string> - <key>Proportion</key> - <string>443pt</string> - </dict> - </array> - <key>Name</key> - <string>Debug</string> - <key>ServiceClasses</key> - <array> - <string>XCModuleDock</string> - <string>XCModuleDock</string> - <string>PBXDebugCLIModule</string> - <string>PBXDebugSessionModule</string> - <string>XCConsole</string> - </array> - <key>TableOfContents</key> - <array> - <string>1CC8E6A5069209BD00BB180A</string> - <string>1CC8E6A6069209BD00BB180A</string> - <string>1CCC7628064C1048000F2A68</string> - <string>1CCC7629064C1048000F2A68</string> - <string>1CC8E6A7069209BD00BB180A</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.debug</string> - </dict> - </array> - <key>PerspectivesBarVisible</key> - <true/> - <key>ShelfIsVisible</key> - <false/> - <key>SourceDescription</key> - <string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecification.xcperspec'</string> - <key>StatusbarIsVisible</key> - <true/> - <key>TimeStamp</key> - <real>171582783.00723499</real> - <key>ToolbarDisplayMode</key> - <integer>1</integer> - <key>ToolbarIsVisible</key> - <true/> - <key>ToolbarSizeMode</key> - <integer>1</integer> - <key>Type</key> - <string>Perspectives</string> - <key>UpdateMessage</key> - <string></string> - <key>WindowJustification</key> - <integer>5</integer> - <key>WindowOrderList</key> - <array> - <string>/Volumes/Ra-Tilt/Users/lxs/KfM/CCAPI/src/lib/ccapi/mac/CCAPI.xcodeproj</string> - </array> - <key>WindowString</key> - <string>170 278 1340 900 0 0 1920 1178 </string> - <key>WindowTools</key> - <array> - <dict> - <key>Identifier</key> - <string>windowTool.find</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CDD528C0622207200134675</string> - <key>PBXProjectModuleLabel</key> - <string><No Editor></string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528D0623707200166675</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <integer>1</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {781, 167}}</string> - <key>RubberWindowFrame</key> - <string>62 385 781 470 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>781pt</string> - </dict> - </array> - <key>Proportion</key> - <string>50%</string> - </dict> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD0528E0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>Project Find</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{8, 0}, {773, 254}}</string> - <key>RubberWindowFrame</key> - <string>62 385 781 470 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXProjectFindModule</string> - <key>Proportion</key> - <string>50%</string> - </dict> - </array> - <key>Proportion</key> - <string>428pt</string> - </dict> - </array> - <key>Name</key> - <string>Project Find</string> - <key>ServiceClasses</key> - <array> - <string>PBXProjectFindModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C530D57069F1CE1000CFCEE</string> - <string>1C530D58069F1CE1000CFCEE</string> - <string>1C530D59069F1CE1000CFCEE</string> - <string>1CDD528C0622207200134675</string> - <string>1C530D5A069F1CE1000CFCEE</string> - <string>1CE0B1FE06471DED0097A5F4</string> - <string>1CD0528E0623707200166675</string> - </array> - <key>WindowString</key> - <string>62 385 781 470 0 0 1440 878 </string> - <key>WindowToolGUID</key> - <string>1C530D57069F1CE1000CFCEE</string> - <key>WindowToolIsVisible</key> - <integer>0</integer> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.run</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>LauncherConfigVersion</key> - <string>3</string> - <key>PBXProjectModuleGUID</key> - <string>1CD0528B0623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>Run - cocoapp112 - cocoapp112</string> - <key>Runner</key> - <dict> - <key>HorizontalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {365, 167}}</string> - <string>{{0, 176}, {365, 267}}</string> - </array> - </dict> - <key>VerticalSplitView</key> - <dict> - <key>_collapsingFrameDimension</key> - <real>0.0</real> - <key>_indexOfCollapsedView</key> - <integer>0</integer> - <key>_percentageOfCollapsedView</key> - <real>0.0</real> - <key>isCollapsed</key> - <string>yes</string> - <key>sizes</key> - <array> - <string>{{0, 0}, {405, 443}}</string> - <string>{{414, 0}, {514, 443}}</string> - </array> - </dict> - </dict> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {456, 192}}</string> - <key>RubberWindowFrame</key> - <string>741 130 456 234 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXRunSessionModule</string> - <key>Proportion</key> - <string>192pt</string> - </dict> - </array> - <key>Proportion</key> - <string>192pt</string> - </dict> - </array> - <key>Name</key> - <string>Run Log</string> - <key>ServiceClasses</key> - <array> - <string>PBXRunSessionModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C78EAAF065D492600B07095</string> - <string>1C78EAB0065D492600B07095</string> - <string>1CD0528B0623707200166675</string> - <string>1C78EAB1065D492600B07095</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.run</string> - <key>WindowString</key> - <string>741 130 456 234 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.scm</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1C78EAB2065D492600B07095</string> - <key>PBXProjectModuleLabel</key> - <string><No Editor></string> - <key>PBXSplitModuleInNavigatorKey</key> - <dict> - <key>Split0</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1C78EAB3065D492600B07095</string> - </dict> - <key>SplitCount</key> - <string>1</string> - </dict> - <key>StatusBarVisibility</key> - <integer>1</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {452, 0}}</string> - <key>RubberWindowFrame</key> - <string>743 379 452 308 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>0pt</string> - </dict> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CD052920623707200166675</string> - <key>PBXProjectModuleLabel</key> - <string>SCM</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>ConsoleFrame</key> - <string>{{0, 259}, {452, 0}}</string> - <key>Frame</key> - <string>{{0, 7}, {452, 259}}</string> - <key>RubberWindowFrame</key> - <string>743 379 452 308 0 0 1280 1002 </string> - <key>TableConfiguration</key> - <array> - <string>Status</string> - <real>30</real> - <string>FileName</string> - <real>199</real> - <string>Path</string> - <real>197.09500122070312</real> - </array> - <key>TableFrame</key> - <string>{{0, 0}, {452, 250}}</string> - </dict> - <key>Module</key> - <string>PBXCVSModule</string> - <key>Proportion</key> - <string>262pt</string> - </dict> - </array> - <key>Proportion</key> - <string>266pt</string> - </dict> - </array> - <key>Name</key> - <string>SCM</string> - <key>ServiceClasses</key> - <array> - <string>PBXCVSModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1C78EAB4065D492600B07095</string> - <string>1C78EAB5065D492600B07095</string> - <string>1C78EAB2065D492600B07095</string> - <string>1CD052920623707200166675</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.scm</string> - <key>WindowString</key> - <string>743 379 452 308 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.breakpoints</string> - <key>IsVertical</key> - <integer>0</integer> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>PBXBottomSmartGroupGIDs</key> - <array> - <string>1C77FABC04509CD000000102</string> - </array> - <key>PBXProjectModuleGUID</key> - <string>1CE0B1FE06471DED0097A5F4</string> - <key>PBXProjectModuleLabel</key> - <string>Files</string> - <key>PBXProjectStructureProvided</key> - <string>no</string> - <key>PBXSmartGroupTreeModuleColumnData</key> - <dict> - <key>PBXSmartGroupTreeModuleColumnWidthsKey</key> - <array> - <real>168</real> - </array> - <key>PBXSmartGroupTreeModuleColumnsKey_v4</key> - <array> - <string>MainColumn</string> - </array> - </dict> - <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key> - <dict> - <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key> - <array> - <string>1C77FABC04509CD000000102</string> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key> - <array> - <array> - <integer>0</integer> - </array> - </array> - <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key> - <string>{{0, 0}, {168, 350}}</string> - </dict> - <key>PBXTopSmartGroupGIDs</key> - <array/> - <key>XCIncludePerspectivesSwitch</key> - <integer>0</integer> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{0, 0}, {185, 368}}</string> - <key>GroupTreeTableConfiguration</key> - <array> - <string>MainColumn</string> - <real>168</real> - </array> - <key>RubberWindowFrame</key> - <string>315 424 744 409 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>PBXSmartGroupTreeModule</string> - <key>Proportion</key> - <string>185pt</string> - </dict> - <dict> - <key>ContentConfiguration</key> - <dict> - <key>PBXProjectModuleGUID</key> - <string>1CA1AED706398EBD00589147</string> - <key>PBXProjectModuleLabel</key> - <string>Detail</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>Frame</key> - <string>{{190, 0}, {554, 368}}</string> - <key>RubberWindowFrame</key> - <string>315 424 744 409 0 0 1440 878 </string> - </dict> - <key>Module</key> - <string>XCDetailModule</string> - <key>Proportion</key> - <string>554pt</string> - </dict> - </array> - <key>Proportion</key> - <string>368pt</string> - </dict> - </array> - <key>MajorVersion</key> - <integer>2</integer> - <key>MinorVersion</key> - <integer>0</integer> - <key>Name</key> - <string>Breakpoints</string> - <key>ServiceClasses</key> - <array> - <string>PBXSmartGroupTreeModule</string> - <string>XCDetailModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>TableOfContents</key> - <array> - <string>1CDDB66807F98D9800BB5817</string> - <string>1CDDB66907F98D9800BB5817</string> - <string>1CE0B1FE06471DED0097A5F4</string> - <string>1CA1AED706398EBD00589147</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.breakpoints</string> - <key>WindowString</key> - <string>315 424 744 409 0 0 1440 878 </string> - <key>WindowToolGUID</key> - <string>1CDDB66807F98D9800BB5817</string> - <key>WindowToolIsVisible</key> - <integer>1</integer> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.debugAnimator</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>PBXNavigatorGroup</string> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Proportion</key> - <string>100%</string> - </dict> - </array> - <key>Name</key> - <string>Debug Visualizer</string> - <key>ServiceClasses</key> - <array> - <string>PBXNavigatorGroup</string> - </array> - <key>StatusbarIsVisible</key> - <integer>1</integer> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.debugAnimator</string> - <key>WindowString</key> - <string>100 100 700 500 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.bookmarks</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>Module</key> - <string>PBXBookmarksModule</string> - <key>Proportion</key> - <string>166pt</string> - </dict> - </array> - <key>Proportion</key> - <string>166pt</string> - </dict> - </array> - <key>Name</key> - <string>Bookmarks</string> - <key>ServiceClasses</key> - <array> - <string>PBXBookmarksModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>0</integer> - <key>WindowString</key> - <string>538 42 401 187 0 0 1280 1002 </string> - </dict> - <dict> - <key>Identifier</key> - <string>windowTool.classBrowser</string> - <key>Layout</key> - <array> - <dict> - <key>Dock</key> - <array> - <dict> - <key>BecomeActive</key> - <integer>1</integer> - <key>ContentConfiguration</key> - <dict> - <key>OptionsSetName</key> - <string>Hierarchy, all classes</string> - <key>PBXProjectModuleGUID</key> - <string>1CA6456E063B45B4001379D8</string> - <key>PBXProjectModuleLabel</key> - <string>Class Browser - NSObject</string> - </dict> - <key>GeometryConfiguration</key> - <dict> - <key>ClassesFrame</key> - <string>{{0, 0}, {369, 96}}</string> - <key>ClassesTreeTableConfiguration</key> - <array> - <string>PBXClassNameColumnIdentifier</string> - <real>208</real> - <string>PBXClassBookColumnIdentifier</string> - <real>22</real> - </array> - <key>Frame</key> - <string>{{0, 0}, {616, 353}}</string> - <key>MembersFrame</key> - <string>{{0, 105}, {369, 395}}</string> - <key>MembersTreeTableConfiguration</key> - <array> - <string>PBXMemberTypeIconColumnIdentifier</string> - <real>22</real> - <string>PBXMemberNameColumnIdentifier</string> - <real>216</real> - <string>PBXMemberTypeColumnIdentifier</string> - <real>94</real> - <string>PBXMemberBookColumnIdentifier</string> - <real>22</real> - </array> - <key>PBXModuleWindowStatusBarHidden2</key> - <integer>1</integer> - <key>RubberWindowFrame</key> - <string>597 125 616 374 0 0 1280 1002 </string> - </dict> - <key>Module</key> - <string>PBXClassBrowserModule</string> - <key>Proportion</key> - <string>354pt</string> - </dict> - </array> - <key>Proportion</key> - <string>354pt</string> - </dict> - </array> - <key>Name</key> - <string>Class Browser</string> - <key>ServiceClasses</key> - <array> - <string>PBXClassBrowserModule</string> - </array> - <key>StatusbarIsVisible</key> - <integer>0</integer> - <key>TableOfContents</key> - <array> - <string>1C78EABA065D492600B07095</string> - <string>1C78EABB065D492600B07095</string> - <string>1CA6456E063B45B4001379D8</string> - </array> - <key>ToolbarConfiguration</key> - <string>xcode.toolbar.config.classbrowser</string> - <key>WindowString</key> - <string>597 125 616 374 0 0 1280 1002 </string> - </dict> - </array> -</dict> -</plist> diff --git a/src/lib/ccapi/mac/CCAPI.xcodeproj/project.pbxproj b/src/lib/ccapi/mac/CCAPI.xcodeproj/project.pbxproj index 38a73b4..912c48b 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 = "<group>"; }; A1E70D450A38B5BC007BE3E3 /* server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = server.c; sourceTree = "<group>"; }; A1E70D460A38B5BC007BE3E3 /* server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = server.c; sourceTree = "<group>"; }; - 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 = "<group>"; }; A1E70D920A38BB67007BE3E3 /* CCacheServerInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = CCacheServerInfo.plist; sourceTree = "<group>"; }; A1E70D930A38BB67007BE3E3 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; }; diff --git a/src/lib/ccapi/server/ccs_lists.c b/src/lib/ccapi/server/ccs_lists.c index 779c17b..5a20c10 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 a9da8da..004e360 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 <Kerberos/kipc_server.h> 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 66bc6ae..a0af425 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 <string.h> 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 9f2a2a1..c7ee474 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 4414abf..34428c0 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 c0ce13b..03948d1 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 1969b6e..2e6538c 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 7476313..257eb8d 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 d790637..897d559 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 \ |