17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * Openvision retains the copyright to derivative works of 57c478bd9Sstevel@tonic-gate * this source code. Do *NOT* create a derivative of this 67c478bd9Sstevel@tonic-gate * source code before consulting with your legal department. 77c478bd9Sstevel@tonic-gate * Do *NOT* integrate *ANY* of this source code into another 87c478bd9Sstevel@tonic-gate * product before consulting with your legal department. 97c478bd9Sstevel@tonic-gate * 107c478bd9Sstevel@tonic-gate * For further information, read the top-level Openvision 117c478bd9Sstevel@tonic-gate * copyright which is contained in the top-level MIT Kerberos 127c478bd9Sstevel@tonic-gate * copyright. 137c478bd9Sstevel@tonic-gate * 147c478bd9Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 157c478bd9Sstevel@tonic-gate * 167c478bd9Sstevel@tonic-gate */ 177c478bd9Sstevel@tonic-gate 187c478bd9Sstevel@tonic-gate 197c478bd9Sstevel@tonic-gate /* 207c478bd9Sstevel@tonic-gate * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved 217c478bd9Sstevel@tonic-gate * 22*159d09a2SMark Phalan * $Header$ 237c478bd9Sstevel@tonic-gate */ 247c478bd9Sstevel@tonic-gate 257c478bd9Sstevel@tonic-gate #if !defined(lint) && !defined(__CODECENTER__) 26*159d09a2SMark Phalan static char *rcsid = "$Header$"; 277c478bd9Sstevel@tonic-gate #endif 28*159d09a2SMark Phalan #include "server_internal.h" 297c478bd9Sstevel@tonic-gate #include <kadm5/admin.h> 307c478bd9Sstevel@tonic-gate #include <stdlib.h> 317c478bd9Sstevel@tonic-gate 327c478bd9Sstevel@tonic-gate kadm5_ret_t 337c478bd9Sstevel@tonic-gate kadm5_free_policy_ent(void *server_handle, kadm5_policy_ent_t val) 347c478bd9Sstevel@tonic-gate { 357c478bd9Sstevel@tonic-gate kadm5_server_handle_t handle = server_handle; 367c478bd9Sstevel@tonic-gate 377c478bd9Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 387c478bd9Sstevel@tonic-gate 397c478bd9Sstevel@tonic-gate if(val) { 407c478bd9Sstevel@tonic-gate if (val->policy) 417c478bd9Sstevel@tonic-gate free(val->policy); 427c478bd9Sstevel@tonic-gate if (handle->api_version == KADM5_API_VERSION_1) 437c478bd9Sstevel@tonic-gate free(val); 447c478bd9Sstevel@tonic-gate } 457c478bd9Sstevel@tonic-gate return KADM5_OK; 467c478bd9Sstevel@tonic-gate } 477c478bd9Sstevel@tonic-gate 487c478bd9Sstevel@tonic-gate kadm5_ret_t 497c478bd9Sstevel@tonic-gate kadm5_free_name_list(void *server_handle, char **names, int count) 507c478bd9Sstevel@tonic-gate { 517c478bd9Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 527c478bd9Sstevel@tonic-gate 537c478bd9Sstevel@tonic-gate while (count--) 547c478bd9Sstevel@tonic-gate free(names[count]); 557c478bd9Sstevel@tonic-gate free(names); 567c478bd9Sstevel@tonic-gate return KADM5_OK; 577c478bd9Sstevel@tonic-gate } 587c478bd9Sstevel@tonic-gate 597c478bd9Sstevel@tonic-gate /* XXX this ought to be in libkrb5.a, but isn't */ 607c478bd9Sstevel@tonic-gate kadm5_ret_t krb5_free_key_data_contents(context, key) 617c478bd9Sstevel@tonic-gate krb5_context context; 627c478bd9Sstevel@tonic-gate krb5_key_data *key; 637c478bd9Sstevel@tonic-gate { 647c478bd9Sstevel@tonic-gate int i, idx; 657c478bd9Sstevel@tonic-gate 667c478bd9Sstevel@tonic-gate idx = (key->key_data_ver == 1 ? 1 : 2); 677c478bd9Sstevel@tonic-gate for (i = 0; i < idx; i++) { 687c478bd9Sstevel@tonic-gate if (key->key_data_contents[i]) { 697c478bd9Sstevel@tonic-gate memset(key->key_data_contents[i], 0, key->key_data_length[i]); 707c478bd9Sstevel@tonic-gate free(key->key_data_contents[i]); 717c478bd9Sstevel@tonic-gate } 727c478bd9Sstevel@tonic-gate } 737c478bd9Sstevel@tonic-gate return KADM5_OK; 747c478bd9Sstevel@tonic-gate } 757c478bd9Sstevel@tonic-gate 767c478bd9Sstevel@tonic-gate kadm5_ret_t kadm5_free_key_data(void *server_handle, 777c478bd9Sstevel@tonic-gate krb5_int16 *n_key_data, 787c478bd9Sstevel@tonic-gate krb5_key_data *key_data) 797c478bd9Sstevel@tonic-gate { 807c478bd9Sstevel@tonic-gate kadm5_server_handle_t handle = server_handle; 817c478bd9Sstevel@tonic-gate int i, nkeys = (int) *n_key_data; 827c478bd9Sstevel@tonic-gate 837c478bd9Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 847c478bd9Sstevel@tonic-gate 857c478bd9Sstevel@tonic-gate if (key_data == NULL) 867c478bd9Sstevel@tonic-gate return KADM5_OK; 877c478bd9Sstevel@tonic-gate 887c478bd9Sstevel@tonic-gate for (i = 0; i < nkeys; i++) 897c478bd9Sstevel@tonic-gate krb5_free_key_data_contents(handle->context, &key_data[i]); 907c478bd9Sstevel@tonic-gate free(key_data); 917c478bd9Sstevel@tonic-gate return KADM5_OK; 927c478bd9Sstevel@tonic-gate } 937c478bd9Sstevel@tonic-gate 947c478bd9Sstevel@tonic-gate kadm5_ret_t 957c478bd9Sstevel@tonic-gate kadm5_free_principal_ent(void *server_handle, 967c478bd9Sstevel@tonic-gate kadm5_principal_ent_t val) 977c478bd9Sstevel@tonic-gate { 987c478bd9Sstevel@tonic-gate kadm5_server_handle_t handle = server_handle; 997c478bd9Sstevel@tonic-gate int i; 1007c478bd9Sstevel@tonic-gate 1017c478bd9Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 1027c478bd9Sstevel@tonic-gate 1037c478bd9Sstevel@tonic-gate if(val) { 1047c478bd9Sstevel@tonic-gate if(val->principal) 1057c478bd9Sstevel@tonic-gate krb5_free_principal(handle->context, val->principal); 1067c478bd9Sstevel@tonic-gate if(val->mod_name) 1077c478bd9Sstevel@tonic-gate krb5_free_principal(handle->context, val->mod_name); 1087c478bd9Sstevel@tonic-gate if(val->policy) 1097c478bd9Sstevel@tonic-gate free(val->policy); 1107c478bd9Sstevel@tonic-gate if (handle->api_version > KADM5_API_VERSION_1) { 1117c478bd9Sstevel@tonic-gate if (val->n_key_data) { 1127c478bd9Sstevel@tonic-gate for (i = 0; i < val->n_key_data; i++) 1137c478bd9Sstevel@tonic-gate krb5_free_key_data_contents(handle->context, 1147c478bd9Sstevel@tonic-gate &val->key_data[i]); 1157c478bd9Sstevel@tonic-gate free(val->key_data); 1167c478bd9Sstevel@tonic-gate } 1177c478bd9Sstevel@tonic-gate if (val->tl_data) { 1187c478bd9Sstevel@tonic-gate krb5_tl_data *tl; 1197c478bd9Sstevel@tonic-gate 1207c478bd9Sstevel@tonic-gate while (val->tl_data) { 1217c478bd9Sstevel@tonic-gate tl = val->tl_data->tl_data_next; 1227c478bd9Sstevel@tonic-gate free(val->tl_data->tl_data_contents); 1237c478bd9Sstevel@tonic-gate free(val->tl_data); 1247c478bd9Sstevel@tonic-gate val->tl_data = tl; 1257c478bd9Sstevel@tonic-gate } 1267c478bd9Sstevel@tonic-gate } 1277c478bd9Sstevel@tonic-gate } 1287c478bd9Sstevel@tonic-gate 1297c478bd9Sstevel@tonic-gate if (handle->api_version == KADM5_API_VERSION_1) 1307c478bd9Sstevel@tonic-gate free(val); 1317c478bd9Sstevel@tonic-gate } 1327c478bd9Sstevel@tonic-gate return KADM5_OK; 1337c478bd9Sstevel@tonic-gate } 134