diff options
| author | Stanislav Sedov <stas@FreeBSD.org> | 2011-10-05 07:23:29 +0000 | 
|---|---|---|
| committer | Stanislav Sedov <stas@FreeBSD.org> | 2011-10-05 07:23:29 +0000 | 
| commit | 7c450da7b446c557e05f34a100b597800967d987 (patch) | |
| tree | 57a48e7e9b592f2d5b713e80a4455820625c2b7b /lib/krb5/keytab_memory.c | |
| parent | b4e3a10e9339a8400197298021d6ca9b8e3aa039 (diff) | |
Diffstat (limited to 'lib/krb5/keytab_memory.c')
| -rw-r--r-- | lib/krb5/keytab_memory.c | 110 | 
1 files changed, 56 insertions, 54 deletions
| diff --git a/lib/krb5/keytab_memory.c b/lib/krb5/keytab_memory.c index 0ad8720c3fb8..0ee684d36382 100644 --- a/lib/krb5/keytab_memory.c +++ b/lib/krb5/keytab_memory.c @@ -1,40 +1,38 @@  /* - * Copyright (c) 1997 - 2001 Kungliga Tekniska Högskolan - * (Royal Institute of Technology, Stockholm, Sweden).  - * All rights reserved.  + * Copyright (c) 1997 - 2001 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved.   * - * Redistribution and use in source and binary forms, with or without  - * modification, are permitted provided that the following conditions  - * are met:  + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met:   * - * 1. Redistributions of source code must retain the above copyright  - *    notice, this list of conditions and the following disclaimer.  + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer.   * - * 2. Redistributions in binary form must reproduce the above copyright  - *    notice, this list of conditions and the following disclaimer in the  - *    documentation and/or other materials provided with the distribution.  + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution.   * - * 3. Neither the name of the Institute nor the names of its contributors  - *    may be used to endorse or promote products derived from this software  - *    without specific prior written permission.  + * 3. Neither the name of the Institute nor the names of its contributors + *    may be used to endorse or promote products derived from this software + *    without specific prior written permission.   * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND  - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE  - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  - * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE  - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS  - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)  - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT  - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY  - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF  - * SUCH DAMAGE.  + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE.   */  #include "krb5_locl.h" -RCSID("$Id: keytab_memory.c 16352 2005-12-05 18:39:46Z lha $"); -  /* memory operations -------------------------------------------- */  struct mkt_data { @@ -45,14 +43,14 @@ struct mkt_data {      struct mkt_data *next;  }; -/* this mutex protects mkt_head, ->refcount, and ->next  +/* this mutex protects mkt_head, ->refcount, and ->next   * content is not protected (name is static and need no protection)   */  static HEIMDAL_MUTEX mkt_mutex = HEIMDAL_MUTEX_INITIALIZER;  static struct mkt_data *mkt_head; -static krb5_error_code +static krb5_error_code KRB5_CALLCONV  mkt_resolve(krb5_context context, const char *name, krb5_keytab id)  {      struct mkt_data *d; @@ -75,14 +73,16 @@ mkt_resolve(krb5_context context, const char *name, krb5_keytab id)      d = calloc(1, sizeof(*d));      if(d == NULL) {  	HEIMDAL_MUTEX_unlock(&mkt_mutex); -	krb5_set_error_string (context, "malloc: out of memory"); +	krb5_set_error_message(context, ENOMEM, +			       N_("malloc: out of memory", ""));  	return ENOMEM;      }      d->name = strdup(name);      if (d->name == NULL) {  	HEIMDAL_MUTEX_unlock(&mkt_mutex);  	free(d); -	krb5_set_error_string (context, "malloc: out of memory"); +	krb5_set_error_message(context, ENOMEM, +			       N_("malloc: out of memory", ""));  	return ENOMEM;      }      d->entries = NULL; @@ -95,7 +95,7 @@ mkt_resolve(krb5_context context, const char *name, krb5_keytab id)      return 0;  } -static krb5_error_code +static krb5_error_code KRB5_CALLCONV  mkt_close(krb5_context context, krb5_keytab id)  {      struct mkt_data *d = id->data, **dp; @@ -103,7 +103,7 @@ mkt_close(krb5_context context, krb5_keytab id)      HEIMDAL_MUTEX_lock(&mkt_mutex);      if (d->refcount < 1) -	krb5_abortx(context,  +	krb5_abortx(context,  		    "krb5 internal error, memory keytab refcount < 1 on close");      if (--d->refcount > 0) { @@ -126,10 +126,10 @@ mkt_close(krb5_context context, krb5_keytab id)      return 0;  } -static krb5_error_code  -mkt_get_name(krb5_context context,  -	     krb5_keytab id,  -	     char *name,  +static krb5_error_code KRB5_CALLCONV +mkt_get_name(krb5_context context, +	     krb5_keytab id, +	     char *name,  	     size_t namesize)  {      struct mkt_data *d = id->data; @@ -137,9 +137,9 @@ mkt_get_name(krb5_context context,      return 0;  } -static krb5_error_code -mkt_start_seq_get(krb5_context context,  -		  krb5_keytab id,  +static krb5_error_code KRB5_CALLCONV +mkt_start_seq_get(krb5_context context, +		  krb5_keytab id,  		  krb5_kt_cursor *c)  {      /* XXX */ @@ -147,10 +147,10 @@ mkt_start_seq_get(krb5_context context,      return 0;  } -static krb5_error_code -mkt_next_entry(krb5_context context,  -	       krb5_keytab id,  -	       krb5_keytab_entry *entry,  +static krb5_error_code KRB5_CALLCONV +mkt_next_entry(krb5_context context, +	       krb5_keytab id, +	       krb5_keytab_entry *entry,  	       krb5_kt_cursor *c)  {      struct mkt_data *d = id->data; @@ -159,15 +159,15 @@ mkt_next_entry(krb5_context context,      return krb5_kt_copy_entry_contents(context, &d->entries[c->fd++], entry);  } -static krb5_error_code -mkt_end_seq_get(krb5_context context,  +static krb5_error_code KRB5_CALLCONV +mkt_end_seq_get(krb5_context context,  		krb5_keytab id,  		krb5_kt_cursor *cursor)  {      return 0;  } -static krb5_error_code +static krb5_error_code KRB5_CALLCONV  mkt_add_entry(krb5_context context,  	      krb5_keytab id,  	      krb5_keytab_entry *entry) @@ -176,15 +176,16 @@ mkt_add_entry(krb5_context context,      krb5_keytab_entry *tmp;      tmp = realloc(d->entries, (d->num_entries + 1) * sizeof(*d->entries));      if(tmp == NULL) { -	krb5_set_error_string (context, "malloc: out of memory"); +	krb5_set_error_message(context, ENOMEM, +			       N_("malloc: out of memory", ""));  	return ENOMEM;      }      d->entries = tmp; -    return krb5_kt_copy_entry_contents(context, entry,  +    return krb5_kt_copy_entry_contents(context, entry,  				       &d->entries[d->num_entries++]);  } -static krb5_error_code +static krb5_error_code KRB5_CALLCONV  mkt_remove_entry(krb5_context context,  		 krb5_keytab id,  		 krb5_keytab_entry *entry) @@ -192,15 +193,15 @@ mkt_remove_entry(krb5_context context,      struct mkt_data *d = id->data;      krb5_keytab_entry *e, *end;      int found = 0; -     +      if (d->num_entries == 0) { -	krb5_clear_error_string(context); +	krb5_clear_error_message(context);          return KRB5_KT_NOTFOUND;      }      /* do this backwards to minimize copying */      for(end = d->entries + d->num_entries, e = end - 1; e >= d->entries; e--) { -	if(krb5_kt_compare(context, e, entry->principal,  +	if(krb5_kt_compare(context, e, entry->principal,  			   entry->vno, entry->keyblock.keytype)) {  	    krb5_kt_free_entry(context, e);  	    memmove(e, e + 1, (end - e - 1) * sizeof(*e)); @@ -211,7 +212,7 @@ mkt_remove_entry(krb5_context context,  	}      }      if (!found) { -	krb5_clear_error_string (context); +	krb5_clear_error_message (context);  	return KRB5_KT_NOTFOUND;      }      e = realloc(d->entries, d->num_entries * sizeof(*d->entries)); @@ -225,6 +226,7 @@ const krb5_kt_ops krb5_mkt_ops = {      mkt_resolve,      mkt_get_name,      mkt_close, +    NULL, /* destroy */      NULL, /* get */      mkt_start_seq_get,      mkt_next_entry, | 
