Line data Source code
1 : /*
2 : * Copyright (c) 1997, 1998, 2002 Kungliga Tekniska Högskolan
3 : * (Royal Institute of Technology, Stockholm, Sweden).
4 : * All rights reserved.
5 : *
6 : * Portions Copyright (c) 2009 Apple Inc. All rights reserved.
7 : *
8 : * Redistribution and use in source and binary forms, with or without
9 : * modification, are permitted provided that the following conditions
10 : * are met:
11 : *
12 : * 1. Redistributions of source code must retain the above copyright
13 : * notice, this list of conditions and the following disclaimer.
14 : *
15 : * 2. Redistributions in binary form must reproduce the above copyright
16 : * notice, this list of conditions and the following disclaimer in the
17 : * documentation and/or other materials provided with the distribution.
18 : *
19 : * 3. Neither the name of the Institute nor the names of its contributors
20 : * may be used to endorse or promote products derived from this software
21 : * without specific prior written permission.
22 : *
23 : * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
24 : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 : * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
27 : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 : * SUCH DAMAGE.
34 : */
35 :
36 : #include "kdc_locl.h"
37 :
38 : KDC_LIB_FUNCTION void KDC_LIB_CALL
39 0 : kdc_openlog(krb5_context context,
40 : const char *service,
41 : krb5_kdc_configuration *config)
42 : {
43 0 : char **s = NULL, **p;
44 0 : krb5_initlog(context, "kdc", &config->logf);
45 0 : s = krb5_config_get_strings(context, NULL, service, "logging", NULL);
46 0 : if(s == NULL)
47 0 : s = krb5_config_get_strings(context, NULL, "logging", service, NULL);
48 0 : if(s){
49 0 : for(p = s; *p; p++)
50 0 : krb5_addlog_dest(context, config->logf, *p);
51 0 : krb5_config_free_strings(s);
52 : }else {
53 0 : char *ss;
54 0 : if (asprintf(&ss, "0-1/FILE:%s/%s", hdb_db_dir(context),
55 : KDC_LOG_FILE) < 0)
56 0 : err(1, "out of memory");
57 0 : krb5_addlog_dest(context, config->logf, ss);
58 0 : free(ss);
59 : }
60 0 : krb5_set_warn_dest(context, config->logf);
61 0 : }
62 :
63 : #undef __attribute__
64 : #define __attribute__(X)
65 :
66 : KDC_LIB_FUNCTION char * KDC_LIB_CALL
67 1037068 : kdc_log_msg_va(krb5_context context,
68 : krb5_kdc_configuration *config,
69 : int level, const char *fmt, va_list ap)
70 : __attribute__ ((__format__ (__printf__, 4, 0)))
71 : {
72 36567 : char *msg;
73 1037068 : krb5_vlog_msg(context, config->logf, &msg, level, fmt, ap);
74 1037068 : return msg;
75 : }
76 :
77 : KDC_LIB_FUNCTION char * KDC_LIB_CALL
78 0 : kdc_log_msg(krb5_context context,
79 : krb5_kdc_configuration *config,
80 : int level, const char *fmt, ...)
81 : __attribute__ ((__format__ (__printf__, 4, 5)))
82 : {
83 0 : va_list ap;
84 0 : char *s;
85 0 : va_start(ap, fmt);
86 0 : s = kdc_log_msg_va(context, config, level, fmt, ap);
87 0 : va_end(ap);
88 0 : return s;
89 : }
90 :
91 : KDC_LIB_FUNCTION void KDC_LIB_CALL
92 0 : kdc_vlog(krb5_context context,
93 : krb5_kdc_configuration *config,
94 : int level, const char *fmt, va_list ap)
95 : __attribute__ ((__format__ (__printf__, 4, 0)))
96 : {
97 0 : free(kdc_log_msg_va(context, config, level, fmt, ap));
98 0 : }
99 :
100 : KDC_LIB_FUNCTION void KDC_LIB_CALL
101 852745 : kdc_log(krb5_context context,
102 : krb5_kdc_configuration *config,
103 : int level, const char *fmt, ...)
104 : __attribute__ ((__format__ (__printf__, 4, 5)))
105 : {
106 29741 : va_list ap;
107 852745 : va_start(ap, fmt);
108 852745 : free(kdc_log_msg_va(context, config, level, fmt, ap));
109 852745 : va_end(ap);
110 852745 : }
|