1*0Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 2*0Sstevel@tonic-gate 3*0Sstevel@tonic-gate /* 4*0Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 5*0Sstevel@tonic-gate * 6*0Sstevel@tonic-gate * Openvision retains the copyright to derivative works of 7*0Sstevel@tonic-gate * this source code. Do *NOT* create a derivative of this 8*0Sstevel@tonic-gate * source code before consulting with your legal department. 9*0Sstevel@tonic-gate * Do *NOT* integrate *ANY* of this source code into another 10*0Sstevel@tonic-gate * product before consulting with your legal department. 11*0Sstevel@tonic-gate * 12*0Sstevel@tonic-gate * For further information, read the top-level Openvision 13*0Sstevel@tonic-gate * copyright which is contained in the top-level MIT Kerberos 14*0Sstevel@tonic-gate * copyright. 15*0Sstevel@tonic-gate * 16*0Sstevel@tonic-gate * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 17*0Sstevel@tonic-gate * 18*0Sstevel@tonic-gate */ 19*0Sstevel@tonic-gate 20*0Sstevel@tonic-gate 21*0Sstevel@tonic-gate /* 22*0Sstevel@tonic-gate * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved 23*0Sstevel@tonic-gate * 24*0Sstevel@tonic-gate * $Header: /cvs/krbdev/krb5/src/lib/kadm5/misc_free.c,v 1.18 1997/05/28 17:35:05 bjaspan Exp $ 25*0Sstevel@tonic-gate */ 26*0Sstevel@tonic-gate 27*0Sstevel@tonic-gate #if !defined(lint) && !defined(__CODECENTER__) 28*0Sstevel@tonic-gate static char *rcsid = "$Header: /cvs/krbdev/krb5/src/lib/kadm5/misc_free.c,v 1.18 1997/05/28 17:35:05 bjaspan Exp $"; 29*0Sstevel@tonic-gate #endif 30*0Sstevel@tonic-gate #include <kadm5/admin.h> 31*0Sstevel@tonic-gate #include <stdlib.h> 32*0Sstevel@tonic-gate #include "server_internal.h" 33*0Sstevel@tonic-gate 34*0Sstevel@tonic-gate kadm5_ret_t 35*0Sstevel@tonic-gate kadm5_free_policy_ent(void *server_handle, kadm5_policy_ent_t val) 36*0Sstevel@tonic-gate { 37*0Sstevel@tonic-gate kadm5_server_handle_t handle = server_handle; 38*0Sstevel@tonic-gate 39*0Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 40*0Sstevel@tonic-gate 41*0Sstevel@tonic-gate if(val) { 42*0Sstevel@tonic-gate if (val->policy) 43*0Sstevel@tonic-gate free(val->policy); 44*0Sstevel@tonic-gate if (handle->api_version == KADM5_API_VERSION_1) 45*0Sstevel@tonic-gate free(val); 46*0Sstevel@tonic-gate } 47*0Sstevel@tonic-gate return KADM5_OK; 48*0Sstevel@tonic-gate } 49*0Sstevel@tonic-gate 50*0Sstevel@tonic-gate kadm5_ret_t 51*0Sstevel@tonic-gate kadm5_free_name_list(void *server_handle, char **names, int count) 52*0Sstevel@tonic-gate { 53*0Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 54*0Sstevel@tonic-gate 55*0Sstevel@tonic-gate while (count--) 56*0Sstevel@tonic-gate free(names[count]); 57*0Sstevel@tonic-gate free(names); 58*0Sstevel@tonic-gate return KADM5_OK; 59*0Sstevel@tonic-gate } 60*0Sstevel@tonic-gate 61*0Sstevel@tonic-gate /* XXX this ought to be in libkrb5.a, but isn't */ 62*0Sstevel@tonic-gate kadm5_ret_t krb5_free_key_data_contents(context, key) 63*0Sstevel@tonic-gate krb5_context context; 64*0Sstevel@tonic-gate krb5_key_data *key; 65*0Sstevel@tonic-gate { 66*0Sstevel@tonic-gate int i, idx; 67*0Sstevel@tonic-gate 68*0Sstevel@tonic-gate idx = (key->key_data_ver == 1 ? 1 : 2); 69*0Sstevel@tonic-gate for (i = 0; i < idx; i++) { 70*0Sstevel@tonic-gate if (key->key_data_contents[i]) { 71*0Sstevel@tonic-gate memset(key->key_data_contents[i], 0, key->key_data_length[i]); 72*0Sstevel@tonic-gate free(key->key_data_contents[i]); 73*0Sstevel@tonic-gate } 74*0Sstevel@tonic-gate } 75*0Sstevel@tonic-gate return KADM5_OK; 76*0Sstevel@tonic-gate } 77*0Sstevel@tonic-gate 78*0Sstevel@tonic-gate kadm5_ret_t kadm5_free_key_data(void *server_handle, 79*0Sstevel@tonic-gate krb5_int16 *n_key_data, 80*0Sstevel@tonic-gate krb5_key_data *key_data) 81*0Sstevel@tonic-gate { 82*0Sstevel@tonic-gate kadm5_server_handle_t handle = server_handle; 83*0Sstevel@tonic-gate int i, nkeys = (int) *n_key_data; 84*0Sstevel@tonic-gate 85*0Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 86*0Sstevel@tonic-gate 87*0Sstevel@tonic-gate if (key_data == NULL) 88*0Sstevel@tonic-gate return KADM5_OK; 89*0Sstevel@tonic-gate 90*0Sstevel@tonic-gate for (i = 0; i < nkeys; i++) 91*0Sstevel@tonic-gate krb5_free_key_data_contents(handle->context, &key_data[i]); 92*0Sstevel@tonic-gate free(key_data); 93*0Sstevel@tonic-gate return KADM5_OK; 94*0Sstevel@tonic-gate } 95*0Sstevel@tonic-gate 96*0Sstevel@tonic-gate kadm5_ret_t 97*0Sstevel@tonic-gate kadm5_free_principal_ent(void *server_handle, 98*0Sstevel@tonic-gate kadm5_principal_ent_t val) 99*0Sstevel@tonic-gate { 100*0Sstevel@tonic-gate kadm5_server_handle_t handle = server_handle; 101*0Sstevel@tonic-gate int i; 102*0Sstevel@tonic-gate 103*0Sstevel@tonic-gate _KADM5_CHECK_HANDLE(server_handle); 104*0Sstevel@tonic-gate 105*0Sstevel@tonic-gate if(val) { 106*0Sstevel@tonic-gate if(val->principal) 107*0Sstevel@tonic-gate krb5_free_principal(handle->context, val->principal); 108*0Sstevel@tonic-gate if(val->mod_name) 109*0Sstevel@tonic-gate krb5_free_principal(handle->context, val->mod_name); 110*0Sstevel@tonic-gate if(val->policy) 111*0Sstevel@tonic-gate free(val->policy); 112*0Sstevel@tonic-gate if (handle->api_version > KADM5_API_VERSION_1) { 113*0Sstevel@tonic-gate if (val->n_key_data) { 114*0Sstevel@tonic-gate for (i = 0; i < val->n_key_data; i++) 115*0Sstevel@tonic-gate krb5_free_key_data_contents(handle->context, 116*0Sstevel@tonic-gate &val->key_data[i]); 117*0Sstevel@tonic-gate free(val->key_data); 118*0Sstevel@tonic-gate } 119*0Sstevel@tonic-gate if (val->tl_data) { 120*0Sstevel@tonic-gate krb5_tl_data *tl; 121*0Sstevel@tonic-gate 122*0Sstevel@tonic-gate while (val->tl_data) { 123*0Sstevel@tonic-gate tl = val->tl_data->tl_data_next; 124*0Sstevel@tonic-gate free(val->tl_data->tl_data_contents); 125*0Sstevel@tonic-gate free(val->tl_data); 126*0Sstevel@tonic-gate val->tl_data = tl; 127*0Sstevel@tonic-gate } 128*0Sstevel@tonic-gate } 129*0Sstevel@tonic-gate } 130*0Sstevel@tonic-gate 131*0Sstevel@tonic-gate if (handle->api_version == KADM5_API_VERSION_1) 132*0Sstevel@tonic-gate free(val); 133*0Sstevel@tonic-gate } 134*0Sstevel@tonic-gate return KADM5_OK; 135*0Sstevel@tonic-gate } 136