Home | History | Annotate | Line # | Download | only in kadm5
free.c revision 1.1.1.2.4.1
      1  1.1.1.2.4.1    snj /*	$NetBSD: free.c,v 1.1.1.2.4.1 2017/08/20 05:42:06 snj Exp $	*/
      2          1.1  elric 
      3          1.1  elric /*
      4          1.1  elric  * Copyright (c) 1997 - 1999 Kungliga Tekniska Hgskolan
      5          1.1  elric  * (Royal Institute of Technology, Stockholm, Sweden).
      6          1.1  elric  * All rights reserved.
      7          1.1  elric  *
      8          1.1  elric  * Redistribution and use in source and binary forms, with or without
      9          1.1  elric  * modification, are permitted provided that the following conditions
     10          1.1  elric  * are met:
     11          1.1  elric  *
     12          1.1  elric  * 1. Redistributions of source code must retain the above copyright
     13          1.1  elric  *    notice, this list of conditions and the following disclaimer.
     14          1.1  elric  *
     15          1.1  elric  * 2. Redistributions in binary form must reproduce the above copyright
     16          1.1  elric  *    notice, this list of conditions and the following disclaimer in the
     17          1.1  elric  *    documentation and/or other materials provided with the distribution.
     18          1.1  elric  *
     19          1.1  elric  * 3. Neither the name of the Institute nor the names of its contributors
     20          1.1  elric  *    may be used to endorse or promote products derived from this software
     21          1.1  elric  *    without specific prior written permission.
     22          1.1  elric  *
     23          1.1  elric  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
     24          1.1  elric  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     25          1.1  elric  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     26          1.1  elric  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
     27          1.1  elric  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     28          1.1  elric  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     29          1.1  elric  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     30          1.1  elric  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     31          1.1  elric  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     32          1.1  elric  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     33          1.1  elric  * SUCH DAMAGE.
     34          1.1  elric  */
     35          1.1  elric 
     36          1.1  elric #include "kadm5_locl.h"
     37          1.1  elric 
     38  1.1.1.2.4.1    snj __RCSID("$NetBSD: free.c,v 1.1.1.2.4.1 2017/08/20 05:42:06 snj Exp $");
     39          1.1  elric 
     40          1.1  elric void
     41          1.1  elric kadm5_free_key_data(void *server_handle,
     42          1.1  elric 		    int16_t *n_key_data,
     43          1.1  elric 		    krb5_key_data *key_data)
     44          1.1  elric {
     45          1.1  elric     int i;
     46          1.1  elric     for(i = 0; i < *n_key_data; i++){
     47          1.1  elric 	if(key_data[i].key_data_contents[0]){
     48          1.1  elric 	    memset(key_data[i].key_data_contents[0],
     49          1.1  elric 		   0,
     50          1.1  elric 		   key_data[i].key_data_length[0]);
     51          1.1  elric 	    free(key_data[i].key_data_contents[0]);
     52          1.1  elric 	}
     53          1.1  elric 	if(key_data[i].key_data_contents[1])
     54          1.1  elric 	    free(key_data[i].key_data_contents[1]);
     55          1.1  elric     }
     56          1.1  elric     *n_key_data = 0;
     57          1.1  elric }
     58          1.1  elric 
     59          1.1  elric 
     60          1.1  elric void
     61          1.1  elric kadm5_free_principal_ent(void *server_handle,
     62          1.1  elric 			 kadm5_principal_ent_t princ)
     63          1.1  elric {
     64          1.1  elric     kadm5_server_context *context = server_handle;
     65  1.1.1.2.4.1    snj 
     66  1.1.1.2.4.1    snj     if (princ->principal)
     67          1.1  elric 	krb5_free_principal(context->context, princ->principal);
     68  1.1.1.2.4.1    snj     if (princ->mod_name)
     69          1.1  elric 	krb5_free_principal(context->context, princ->mod_name);
     70          1.1  elric     kadm5_free_key_data(server_handle, &princ->n_key_data, princ->key_data);
     71  1.1.1.2.4.1    snj     while (princ->n_tl_data && princ->tl_data) {
     72          1.1  elric 	krb5_tl_data *tp;
     73          1.1  elric 	tp = princ->tl_data;
     74          1.1  elric 	princ->tl_data = tp->tl_data_next;
     75          1.1  elric 	princ->n_tl_data--;
     76          1.1  elric 	memset(tp->tl_data_contents, 0, tp->tl_data_length);
     77          1.1  elric 	free(tp->tl_data_contents);
     78          1.1  elric 	free(tp);
     79          1.1  elric     }
     80  1.1.1.2.4.1    snj     free(princ->key_data);
     81  1.1.1.2.4.1    snj     free(princ->policy);
     82          1.1  elric }
     83          1.1  elric 
     84          1.1  elric void
     85          1.1  elric kadm5_free_name_list(void *server_handle,
     86          1.1  elric 		     char **names,
     87          1.1  elric 		     int *count)
     88          1.1  elric {
     89          1.1  elric     int i;
     90          1.1  elric     for(i = 0; i < *count; i++)
     91          1.1  elric 	free(names[i]);
     92          1.1  elric     free(names);
     93          1.1  elric     *count = 0;
     94          1.1  elric }
     95