Lines Matching refs:id

68 #define KTPRIVATE(id) ((krb5_ktfile_data *)(id)->data)  argument
69 #define KTFILENAME(id) (((krb5_ktfile_data *)(id)->data)->name) argument
70 #define KTFILEP(id) (((krb5_ktfile_data *)(id)->data)->openf) argument
71 #define KTFILEBUFP(id) (((krb5_ktfile_data *)(id)->data)->iobuf) argument
72 #define KTVERSION(id) (((krb5_ktfile_data *)(id)->data)->version) argument
73 #define KTLOCK(id) k5_mutex_lock(&((krb5_ktfile_data *)(id)->data)->lock) argument
74 #define KTUNLOCK(id) k5_mutex_unlock(&((krb5_ktfile_data *)(id)->data)->lock) argument
75 #define KTCHECKLOCK(id) k5_mutex_assert_locked(&((krb5_ktfile_data *)(id)->data)->lock) argument
190 krb5_ktfile_resolve(krb5_context context, const char *name, krb5_keytab *id) in krb5_ktfile_resolve() argument
195 if ((*id = (krb5_keytab) malloc(sizeof(**id))) == NULL) in krb5_ktfile_resolve()
198 (*id)->ops = &krb5_ktf_ops; in krb5_ktfile_resolve()
200 krb5_xfree(*id); in krb5_ktfile_resolve()
207 krb5_xfree(*id); in krb5_ktfile_resolve()
214 krb5_xfree(*id); in krb5_ktfile_resolve()
222 (*id)->data = (krb5_pointer)data; in krb5_ktfile_resolve()
223 (*id)->magic = KV5M_KEYTAB; in krb5_ktfile_resolve()
234 krb5_ktfile_close(krb5_context context, krb5_keytab id) in krb5_ktfile_close() argument
243 krb5_xfree(KTFILENAME(id)); in krb5_ktfile_close()
244 zap(KTFILEBUFP(id), BUFSIZ); in krb5_ktfile_close()
245 k5_mutex_destroy(&((krb5_ktfile_data *)id->data)->lock); in krb5_ktfile_close()
246 krb5_xfree(id->data); in krb5_ktfile_close()
247 id->ops = 0; in krb5_ktfile_close()
248 krb5_xfree(id); in krb5_ktfile_close()
259 krb5_ktfile_get_entry(krb5_context context, krb5_keytab id, in krb5_ktfile_get_entry() argument
269 kerror = KTLOCK(id); in krb5_ktfile_get_entry()
274 if ((kerror = krb5_ktfileint_openr(context, id))) { in krb5_ktfile_get_entry()
275 KTUNLOCK(id); in krb5_ktfile_get_entry()
288 if ((kerror = krb5_ktfileint_read_entry(context, id, &new_entry))) in krb5_ktfile_get_entry()
396 (void) krb5_ktfileint_close(context, id); in krb5_ktfile_get_entry()
397 KTUNLOCK(id); in krb5_ktfile_get_entry()
401 if ((kerror = krb5_ktfileint_close(context, id)) != 0) { in krb5_ktfile_get_entry()
402 KTUNLOCK(id); in krb5_ktfile_get_entry()
406 KTUNLOCK(id); in krb5_ktfile_get_entry()
416 krb5_ktfile_get_name(krb5_context context, krb5_keytab id, char *name, unsigned int len) in krb5_ktfile_get_name() argument
426 if (len < strlen(id->ops->prefix)+2) in krb5_ktfile_get_name()
428 strcpy(name, id->ops->prefix); in krb5_ktfile_get_name()
429 name += strlen(id->ops->prefix); in krb5_ktfile_get_name()
432 len -= strlen(id->ops->prefix)+1; in krb5_ktfile_get_name()
435 if (len < strlen(KTFILENAME(id))+1) in krb5_ktfile_get_name()
437 strcpy(name, KTFILENAME(id)); in krb5_ktfile_get_name()
448 krb5_ktfile_start_seq_get(krb5_context context, krb5_keytab id, krb5_kt_cursor *cursorp) in krb5_ktfile_start_seq_get() argument
453 retval = KTLOCK(id); in krb5_ktfile_start_seq_get()
457 if ((retval = krb5_ktfileint_openr(context, id))) { in krb5_ktfile_start_seq_get()
458 KTUNLOCK(id); in krb5_ktfile_start_seq_get()
463 krb5_ktfileint_close(context, id); in krb5_ktfile_start_seq_get()
464 KTUNLOCK(id); in krb5_ktfile_start_seq_get()
467 *fileoff = ftell(KTFILEP(id)); in krb5_ktfile_start_seq_get()
469 KTUNLOCK(id); in krb5_ktfile_start_seq_get()
479 krb5_ktfile_get_next(krb5_context context, krb5_keytab id, krb5_keytab_entry *entry, krb5_kt_cursor… in krb5_ktfile_get_next() argument
485 kerror = KTLOCK(id); in krb5_ktfile_get_next()
488 if (KTFILEP(id) == NULL) { in krb5_ktfile_get_next()
489 KTUNLOCK(id); in krb5_ktfile_get_next()
492 if (fseek(KTFILEP(id), *fileoff, 0) == -1) { in krb5_ktfile_get_next()
493 KTUNLOCK(id); in krb5_ktfile_get_next()
496 if ((kerror = krb5_ktfileint_read_entry(context, id, &cur_entry))) { in krb5_ktfile_get_next()
497 KTUNLOCK(id); in krb5_ktfile_get_next()
500 *fileoff = ftell(KTFILEP(id)); in krb5_ktfile_get_next()
502 KTUNLOCK(id); in krb5_ktfile_get_next()
511 krb5_ktfile_end_get(krb5_context context, krb5_keytab id, krb5_kt_cursor *cursor) in krb5_ktfile_end_get() argument
516 KTLOCK(id); in krb5_ktfile_end_get()
517 kerror = krb5_ktfileint_close(context, id); in krb5_ktfile_end_get()
518 KTUNLOCK(id); in krb5_ktfile_end_get()
807 krb5_ktfile_wresolve(krb5_context context, const char *name, krb5_keytab *id) in krb5_ktfile_wresolve() argument
812 if ((*id = (krb5_keytab) malloc(sizeof(**id))) == NULL) in krb5_ktfile_wresolve()
815 (*id)->ops = &krb5_ktf_writable_ops; in krb5_ktfile_wresolve()
817 krb5_xfree(*id); in krb5_ktfile_wresolve()
824 krb5_xfree(*id); in krb5_ktfile_wresolve()
831 krb5_xfree(*id); in krb5_ktfile_wresolve()
839 (*id)->data = (krb5_pointer)data; in krb5_ktfile_wresolve()
840 (*id)->magic = KV5M_KEYTAB; in krb5_ktfile_wresolve()
850 krb5_ktfile_add(krb5_context context, krb5_keytab id, krb5_keytab_entry *entry) in krb5_ktfile_add() argument
854 retval = KTLOCK(id); in krb5_ktfile_add()
857 if ((retval = krb5_ktfileint_openw(context, id))) { in krb5_ktfile_add()
858 KTUNLOCK(id); in krb5_ktfile_add()
861 if (fseek(KTFILEP(id), 0, 2) == -1) { in krb5_ktfile_add()
862 KTUNLOCK(id); in krb5_ktfile_add()
865 retval = krb5_ktfileint_write_entry(context, id, entry); in krb5_ktfile_add()
866 krb5_ktfileint_close(context, id); in krb5_ktfile_add()
867 KTUNLOCK(id); in krb5_ktfile_add()
876 krb5_ktfile_remove(krb5_context context, krb5_keytab id, krb5_keytab_entry *entry) in krb5_ktfile_remove() argument
882 kerror = KTLOCK(id); in krb5_ktfile_remove()
886 if ((kerror = krb5_ktfileint_openw(context, id))) { in krb5_ktfile_remove()
887 KTUNLOCK(id); in krb5_ktfile_remove()
896 if ((kerror = krb5_ktfileint_internal_read_entry(context, id, in krb5_ktfile_remove()
915 (void) krb5_ktfileint_close(context, id); in krb5_ktfile_remove()
916 KTUNLOCK(id); in krb5_ktfile_remove()
920 kerror = krb5_ktfileint_delete_entry(context, id, delete_point); in krb5_ktfile_remove()
923 (void) krb5_ktfileint_close(context, id); in krb5_ktfile_remove()
925 kerror = krb5_ktfileint_close(context, id); in krb5_ktfile_remove()
927 KTUNLOCK(id); in krb5_ktfile_remove()
1083 krb5_ktfileint_open(krb5_context context, krb5_keytab id, int mode) in krb5_ktfileint_open() argument
1089 KTCHECKLOCK(id); in krb5_ktfileint_open()
1091 KTFILEP(id) = fopen(KTFILENAME(id), in krb5_ktfileint_open()
1094 if (!KTFILEP(id)) { in krb5_ktfileint_open()
1097 krb5_create_secure_file(context, KTFILENAME(id)); in krb5_ktfileint_open()
1099 KTFILEP(id) = fopen(KTFILENAME(id), fopen_mode_rbplus); in krb5_ktfileint_open()
1100 if (!KTFILEP(id)) in krb5_ktfileint_open()
1114 KTFILENAME(id)); in krb5_ktfileint_open()
1121 if ((kerror = krb5_lock_file(context, fileno(KTFILEP(id)), mode))) { in krb5_ktfileint_open()
1122 (void) fclose(KTFILEP(id)); in krb5_ktfileint_open()
1123 KTFILEP(id) = 0; in krb5_ktfileint_open()
1127 setbuf(KTFILEP(id), KTFILEBUFP(id)); in krb5_ktfileint_open()
1132 KTVERSION(id) = krb5_kt_default_vno; in krb5_ktfileint_open()
1133 if (!xfwrite(&kt_vno, sizeof(kt_vno), 1, KTFILEP(id))) { in krb5_ktfileint_open()
1135 (void) krb5_unlock_file(context, fileno(KTFILEP(id))); in krb5_ktfileint_open()
1136 (void) fclose(KTFILEP(id)); in krb5_ktfileint_open()
1141 if (!xfread(&kt_vno, sizeof(kt_vno), 1, KTFILEP(id))) { in krb5_ktfileint_open()
1142 if (feof(KTFILEP(id))) in krb5_ktfileint_open()
1146 (void) krb5_unlock_file(context, fileno(KTFILEP(id))); in krb5_ktfileint_open()
1147 (void) fclose(KTFILEP(id)); in krb5_ktfileint_open()
1150 kt_vno = KTVERSION(id) = ntohs(kt_vno); in krb5_ktfileint_open()
1153 (void) krb5_unlock_file(context, fileno(KTFILEP(id))); in krb5_ktfileint_open()
1154 (void) fclose(KTFILEP(id)); in krb5_ktfileint_open()
1162 krb5_ktfileint_openr(krb5_context context, krb5_keytab id) in krb5_ktfileint_openr() argument
1164 return krb5_ktfileint_open(context, id, KRB5_LOCKMODE_SHARED); in krb5_ktfileint_openr()
1168 krb5_ktfileint_openw(krb5_context context, krb5_keytab id) in krb5_ktfileint_openw() argument
1170 return krb5_ktfileint_open(context, id, KRB5_LOCKMODE_EXCLUSIVE); in krb5_ktfileint_openw()
1174 krb5_ktfileint_close(krb5_context context, krb5_keytab id) in krb5_ktfileint_close() argument
1178 KTCHECKLOCK(id); in krb5_ktfileint_close()
1179 if (!KTFILEP(id)) in krb5_ktfileint_close()
1181 kerror = krb5_unlock_file(context, fileno(KTFILEP(id))); in krb5_ktfileint_close()
1182 (void) fclose(KTFILEP(id)); in krb5_ktfileint_close()
1183 KTFILEP(id) = 0; in krb5_ktfileint_close()
1188 krb5_ktfileint_delete_entry(krb5_context context, krb5_keytab id, krb5_int32 delete_point) in krb5_ktfileint_delete_entry() argument
1194 KTCHECKLOCK(id); in krb5_ktfileint_delete_entry()
1195 if (fseek(KTFILEP(id), delete_point, SEEK_SET)) { in krb5_ktfileint_delete_entry()
1198 if (!xfread(&size, sizeof(size), 1, KTFILEP(id))) { in krb5_ktfileint_delete_entry()
1201 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_delete_entry()
1206 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_delete_entry()
1209 if (fseek(KTFILEP(id), delete_point, SEEK_SET)) { in krb5_ktfileint_delete_entry()
1213 if (!xfwrite(&minus_size, sizeof(minus_size), 1, KTFILEP(id))) { in krb5_ktfileint_delete_entry()
1225 xfwrite(iobuf, 1, (size_t) len, KTFILEP(id)); in krb5_ktfileint_delete_entry()
1232 return krb5_sync_disk_file(context, KTFILEP(id)); in krb5_ktfileint_delete_entry()
1239 krb5_ktfileint_internal_read_entry(krb5_context context, krb5_keytab id, krb5_keytab_entry *ret_ent… in krb5_ktfileint_internal_read_entry() argument
1253 KTCHECKLOCK(id); in krb5_ktfileint_internal_read_entry()
1259 if (fseek(KTFILEP(id), 0L, SEEK_CUR) < 0) in krb5_ktfileint_internal_read_entry()
1265 *delete_point = ftell(KTFILEP(id)); in krb5_ktfileint_internal_read_entry()
1266 if (!xfread(&size, sizeof(size), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1269 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_internal_read_entry()
1273 if (fseek(KTFILEP(id), -size, SEEK_CUR)) { in krb5_ktfileint_internal_read_entry()
1283 start_pos = ftell(KTFILEP(id)); in krb5_ktfileint_internal_read_entry()
1288 if (!xfread(&count, sizeof(count), 1, KTFILEP(id))) in krb5_ktfileint_internal_read_entry()
1290 if (KTVERSION(id) == KRB5_KT_VNO_1) { in krb5_ktfileint_internal_read_entry()
1313 if (!xfread(&princ_size, sizeof(princ_size), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1317 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_internal_read_entry()
1331 if (fread(tmpdata, 1, u_princ_size, KTFILEP(id)) != (size_t) princ_size) { in krb5_ktfileint_internal_read_entry()
1343 if (!xfread(&princ_size, sizeof(princ_size), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1347 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_internal_read_entry()
1361 if (!xfread(princ->data, sizeof(char), u_princ_size, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1369 if (KTVERSION(id) != KRB5_KT_VNO_1) { in krb5_ktfileint_internal_read_entry()
1371 sizeof(ret_entry->principal->type), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1379 if (!xfread(&ret_entry->timestamp, sizeof(ret_entry->timestamp), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1383 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_internal_read_entry()
1387 if (!xfread(&vno, sizeof(vno), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1394 if (!xfread(&enctype, sizeof(enctype), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1400 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_internal_read_entry()
1406 if (!xfread(&count, sizeof(count), 1, KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1410 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_internal_read_entry()
1426 KTFILEP(id))) { in krb5_ktfileint_internal_read_entry()
1434 fseek(KTFILEP(id), start_pos + size, SEEK_SET); in krb5_ktfileint_internal_read_entry()
1451 krb5_ktfileint_read_entry(krb5_context context, krb5_keytab id, krb5_keytab_entry *entryp) in krb5_ktfileint_read_entry() argument
1455 return krb5_ktfileint_internal_read_entry(context, id, entryp, &delete_point); in krb5_ktfileint_read_entry()
1459 krb5_ktfileint_write_entry(krb5_context context, krb5_keytab id, krb5_keytab_entry *entry) in krb5_ktfileint_write_entry() argument
1471 KTCHECKLOCK(id); in krb5_ktfileint_write_entry()
1475 retval = krb5_ktfileint_find_slot(context, id, &size_needed, &commit_point); in krb5_ktfileint_write_entry()
1481 if (fseek(KTFILEP(id), 0L, SEEK_CUR) < 0) in krb5_ktfileint_write_entry()
1486 if (KTVERSION(id) == KRB5_KT_VNO_1) { in krb5_ktfileint_write_entry()
1492 if (!xfwrite(&count, sizeof(count), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1497 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_write_entry()
1499 if (!xfwrite(&size, sizeof(size), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1503 krb5_princ_realm(context, entry->principal)->length, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1511 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_write_entry()
1513 if (!xfwrite(&size, sizeof(size), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1516 if (!xfwrite(princ->data, sizeof(char), princ->length, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1524 if (KTVERSION(id) != KRB5_KT_VNO_1) { in krb5_ktfileint_write_entry()
1526 if (!xfwrite(&princ_type, sizeof(princ_type), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1537 if (KTVERSION(id) == KRB5_KT_VNO_1) in krb5_ktfileint_write_entry()
1541 if (!xfwrite(&timestamp, sizeof(timestamp), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1547 if (!xfwrite(&vno, sizeof(vno), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1551 if (KTVERSION(id) == KRB5_KT_VNO_1) in krb5_ktfileint_write_entry()
1555 if (!xfwrite(&enctype, sizeof(enctype), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1559 if (KTVERSION(id) == KRB5_KT_VNO_1) in krb5_ktfileint_write_entry()
1563 if (!xfwrite(&size, sizeof(size), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1567 entry->key.length, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1571 if (fflush(KTFILEP(id))) in krb5_ktfileint_write_entry()
1574 retval = krb5_sync_disk_file(context, KTFILEP(id)); in krb5_ktfileint_write_entry()
1580 if (fseek(KTFILEP(id), commit_point, SEEK_SET)) { in krb5_ktfileint_write_entry()
1583 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_write_entry()
1585 if (!xfwrite(&size_needed, sizeof(size_needed), 1, KTFILEP(id))) { in krb5_ktfileint_write_entry()
1588 if (fflush(KTFILEP(id))) in krb5_ktfileint_write_entry()
1590 retval = krb5_sync_disk_file(context, KTFILEP(id)); in krb5_ktfileint_write_entry()
1639 krb5_ktfileint_find_slot(krb5_context context, krb5_keytab id, krb5_int32 *size_needed, krb5_int32 … in krb5_ktfileint_find_slot() argument
1648 KTCHECKLOCK(id); in krb5_ktfileint_find_slot()
1652 if (fseek(KTFILEP(id), 0, SEEK_SET)) { in krb5_ktfileint_find_slot()
1655 if (!xfread(&kt_vno, sizeof(kt_vno), 1, KTFILEP(id))) { in krb5_ktfileint_find_slot()
1660 *commit_point = ftell(KTFILEP(id)); in krb5_ktfileint_find_slot()
1661 if (!xfread(&size, sizeof(size), 1, KTFILEP(id))) { in krb5_ktfileint_find_slot()
1669 if (fseek(KTFILEP(id), 0L, SEEK_CUR) < 0) in krb5_ktfileint_find_slot()
1676 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_find_slot()
1680 if (!xfwrite(&size, sizeof(size), 1, KTFILEP(id))) { in krb5_ktfileint_find_slot()
1686 if (KTVERSION(id) != KRB5_KT_VNO_1) in krb5_ktfileint_find_slot()
1690 if (fseek(KTFILEP(id), size, SEEK_CUR)) { in krb5_ktfileint_find_slot()
1702 if (fseek(KTFILEP(id), size, SEEK_CUR)) { in krb5_ktfileint_find_slot()
1709 if (fseek(KTFILEP(id), 0L, SEEK_CUR) < 0) in krb5_ktfileint_find_slot()
1718 zero_point = ftell(KTFILEP(id)); in krb5_ktfileint_find_slot()
1719 while ((size = xfread(iobuf, 1, sizeof(iobuf), KTFILEP(id)))) { in krb5_ktfileint_find_slot()
1727 if (fseek(KTFILEP(id), 0L, SEEK_CUR) < 0) in krb5_ktfileint_find_slot()
1733 xfwrite(iobuf, 1, (size_t) size, KTFILEP(id)); in krb5_ktfileint_find_slot()
1734 fflush(KTFILEP(id)); in krb5_ktfileint_find_slot()
1735 if (feof(KTFILEP(id))) { in krb5_ktfileint_find_slot()
1739 if (fseek(KTFILEP(id), 0L, SEEK_CUR) < 0) in krb5_ktfileint_find_slot()
1745 if (fseek(KTFILEP(id), zero_point, SEEK_SET)) { in krb5_ktfileint_find_slot()