Line data Source code
1 : /* 2 : * Copyright (c) 1997 - 2001, 2004 Kungliga Tekniska Högskolan 3 : * (Royal Institute of Technology, Stockholm, Sweden). 4 : * All rights reserved. 5 : * 6 : * Redistribution and use in source and binary forms, with or without 7 : * modification, are permitted provided that the following conditions 8 : * are met: 9 : * 10 : * 1. Redistributions of source code must retain the above copyright 11 : * notice, this list of conditions and the following disclaimer. 12 : * 13 : * 2. Redistributions in binary form must reproduce the above copyright 14 : * notice, this list of conditions and the following disclaimer in the 15 : * documentation and/or other materials provided with the distribution. 16 : * 17 : * 3. Neither the name of the Institute nor the names of its contributors 18 : * may be used to endorse or promote products derived from this software 19 : * without specific prior written permission. 20 : * 21 : * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 22 : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 : * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 25 : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 : * SUCH DAMAGE. 32 : */ 33 : 34 : #include "krb5_locl.h" 35 : 36 : /* 37 : * Return a NULL-terminated list of default realms in `realms'. 38 : * Free this memory with krb5_free_host_realm. 39 : */ 40 : 41 : KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL 42 21201 : krb5_get_default_realms (krb5_context context, 43 : krb5_realm **realms) 44 : { 45 21201 : if (context->default_realms == NULL) { 46 20141 : krb5_error_code ret = krb5_set_default_realm (context, NULL); 47 20141 : if (ret) 48 0 : return KRB5_CONFIG_NODEFREALM; 49 : } 50 : 51 21201 : return krb5_copy_host_realm (context, 52 21201 : context->default_realms, 53 : realms); 54 : } 55 : 56 : /* 57 : * Return the first default realm. For compatibility. 58 : */ 59 : 60 : KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL 61 32638 : krb5_get_default_realm(krb5_context context, 62 : krb5_realm *realm) 63 : { 64 1166 : krb5_error_code ret; 65 1166 : char *res; 66 : 67 32638 : if (context->default_realms == NULL 68 32579 : || context->default_realms[0] == NULL) { 69 59 : krb5_clear_error_message(context); 70 59 : ret = krb5_set_default_realm (context, NULL); 71 59 : if (ret) 72 0 : return ret; 73 : } 74 : 75 32638 : res = strdup (context->default_realms[0]); 76 32638 : if (res == NULL) 77 0 : return krb5_enomem(context); 78 32638 : *realm = res; 79 32638 : return 0; 80 : }