summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2006-07-17 20:57:49 +0000
committerKen Raeburn <raeburn@mit.edu>2006-07-17 20:57:49 +0000
commitdec35d563a36b4480dac9a6db3d511267fe282ba (patch)
treed183fa573151556aadfc89494c8a255d17a57cb2
parent92dd81c0e8c4a23f6b17cc695a9bcb45defe1445 (diff)
downloadkrb5-ldap-integ.tar.gz
merge to trunk rev 18332ldap-integ
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/ldap-integ@18333 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/aclocal.m49
-rw-r--r--src/appl/gssftp/ftpd/Makefile.in1
-rw-r--r--src/kadmin/ktutil/ktutil.M8
-rw-r--r--src/lib/ccapi/client/ccache.c9
-rw-r--r--src/lib/ccapi/client/ccache.h8
-rw-r--r--src/lib/ccapi/client/context.c4
-rw-r--r--src/lib/ccapi/client/context.h2
-rw-r--r--src/lib/ccapi/common/generic_lists.c2
-rw-r--r--src/lib/ccapi/common/marshall.c882
-rw-r--r--src/lib/ccapi/common/msg.c1244
-rw-r--r--src/lib/ccapi/include/CredentialsCache.h302
-rw-r--r--src/lib/ccapi/include/CredentialsCache2.h2
-rw-r--r--src/lib/ccapi/include/generic_lists.h8
-rw-r--r--src/lib/ccapi/include/msg.h11
-rw-r--r--src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.pbxuser2005
-rw-r--r--src/lib/ccapi/mac/CCAPI.xcodeproj/lxs.perspective1567
-rw-r--r--src/lib/ccapi/mac/CCAPI.xcodeproj/project.pbxproj2
-rw-r--r--src/lib/ccapi/server/ccs_lists.c2
-rw-r--r--src/lib/ccapi/server/mac/main.c4
-rw-r--r--src/lib/ccapi/server/rpc_auth.c1
-rw-r--r--src/lib/gssapi/krb5/indicate_mechs.c2
-rw-r--r--src/lib/krb5/ccache/ccapi/stdcc.c837
-rw-r--r--src/lib/krb5/ccache/ccapi/stdcc.h2
-rw-r--r--src/lib/krb5/ccache/ccapi/stdcc_util.c842
-rw-r--r--src/lib/krb5/ccache/ccapi/stdcc_util.h17
-rw-r--r--src/plugins/kdb/db2/Makefile.in4
26 files changed, 2193 insertions, 5584 deletions
diff --git a/src/aclocal.m4 b/src/aclocal.m4
index 85adb4111..62081052b 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 1f0444c65..005089326 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 de5fe7cb7..9e6d46dfe 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 07e9b8e87..c442a8827 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 0a92ebf63..255cf2a42 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 5d88d4686..4bcfc040c 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 6ff113a26..eb0ea520e 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 2c7398313..62f8d8de4 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 48abb3370..b2433cb1d 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 789fc8746..fa051e95a 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 95c4fe79b..baad48fe7 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 5505bf29f..b7366273d 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 14b7ae28c..93636da38 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 79b9a7f72..1682811c0 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 ea15e540b..000000000
--- 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 198370765..000000000
--- 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>&lt;No Editor&gt;</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>&lt;No Editor&gt;</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 38a73b4c9..912c48b57 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 779c17b7a..5a20c10ab 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 a9da8da6c..004e36095 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 66bc6aee9..a0af4254f 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 9f2a2a1aa..c7ee4746f 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 4414abfbc..34428c08c 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 c0ce13b42..03948d1a8 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 1969b6e71..2e6538cca 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 7476313df..257eb8dcc 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 d79063701..897d55911 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 \