OpenCoverage

bss_log.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bio/bss_log.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: bss_log.c,v 1.22 2018/05/01 13:29:10 tb Exp $ */-
2/* ====================================================================-
3 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.-
4 *-
5 * Redistribution and use in source and binary forms, with or without-
6 * modification, are permitted provided that the following conditions-
7 * are met:-
8 *-
9 * 1. Redistributions of source code must retain the above copyright-
10 * notice, this list of conditions and the following disclaimer. -
11 *-
12 * 2. Redistributions in binary form must reproduce the above copyright-
13 * notice, this list of conditions and the following disclaimer in-
14 * the documentation and/or other materials provided with the-
15 * distribution.-
16 *-
17 * 3. All advertising materials mentioning features or use of this-
18 * software must display the following acknowledgment:-
19 * "This product includes software developed by the OpenSSL Project-
20 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"-
21 *-
22 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
23 * endorse or promote products derived from this software without-
24 * prior written permission. For written permission, please contact-
25 * licensing@OpenSSL.org.-
26 *-
27 * 5. Products derived from this software may not be called "OpenSSL"-
28 * nor may "OpenSSL" appear in their names without prior written-
29 * permission of the OpenSSL Project.-
30 *-
31 * 6. Redistributions of any form whatsoever must retain the following-
32 * acknowledgment:-
33 * "This product includes software developed by the OpenSSL Project-
34 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"-
35 *-
36 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
37 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
38 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
39 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
40 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
47 * OF THE POSSIBILITY OF SUCH DAMAGE.-
48 * ====================================================================-
49 *-
50 * This product includes cryptographic software written by Eric Young-
51 * (eay@cryptsoft.com). This product includes software written by Tim-
52 * Hudson (tjh@cryptsoft.com).-
53 *-
54 */-
55-
56/*-
57 Why BIO_s_log?-
58-
59 BIO_s_log is useful for system daemons (or services under NT).-
60 It is one-way BIO, it sends all stuff to syslogd (on system that-
61 commonly use that), or event log (on NT), or OPCOM (on OpenVMS).-
62-
63*/-
64-
65#include <errno.h>-
66#include <stdio.h>-
67#include <string.h>-
68#include <syslog.h>-
69-
70#include <openssl/buffer.h>-
71#include <openssl/err.h>-
72-
73#ifndef NO_SYSLOG-
74-
75static int slg_write(BIO *h, const char *buf, int num);-
76static int slg_puts(BIO *h, const char *str);-
77static long slg_ctrl(BIO *h, int cmd, long arg1, void *arg2);-
78static int slg_new(BIO *h);-
79static int slg_free(BIO *data);-
80static void xopenlog(BIO* bp, char* name, int level);-
81static void xsyslog(BIO* bp, int priority, const char* string);-
82static void xcloselog(BIO* bp);-
83-
84static const BIO_METHOD methods_slg = {-
85 .type = BIO_TYPE_MEM,-
86 .name = "syslog",-
87 .bwrite = slg_write,-
88 .bputs = slg_puts,-
89 .ctrl = slg_ctrl,-
90 .create = slg_new,-
91 .destroy = slg_free-
92};-
93-
94const BIO_METHOD *-
95BIO_s_log(void)-
96{-
97 return (&methods_slg);
never executed: return (&methods_slg);
0
98}-
99-
100static int-
101slg_new(BIO *bi)-
102{-
103 bi->init = 1;-
104 bi->num = 0;-
105 bi->ptr = NULL;-
106 xopenlog(bi, "application", LOG_DAEMON);-
107 return (1);
never executed: return (1);
0
108}-
109-
110static int-
111slg_free(BIO *a)-
112{-
113 if (a == NULL)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
114 return (0);
never executed: return (0);
0
115 xcloselog(a);-
116 return (1);
never executed: return (1);
0
117}-
118-
119static int-
120slg_write(BIO *b, const char *in, int inl)-
121{-
122 int ret = inl;-
123 char* buf;-
124 char* pp;-
125 int priority, i;-
126 static const struct {-
127 int strl;-
128 char str[10];-
129 int log_level;-
130 }-
131 mapping[] = {-
132 { 6, "PANIC ", LOG_EMERG },-
133 { 6, "EMERG ", LOG_EMERG },-
134 { 4, "EMR ", LOG_EMERG },-
135 { 6, "ALERT ", LOG_ALERT },-
136 { 4, "ALR ", LOG_ALERT },-
137 { 5, "CRIT ", LOG_CRIT },-
138 { 4, "CRI ", LOG_CRIT },-
139 { 6, "ERROR ", LOG_ERR },-
140 { 4, "ERR ", LOG_ERR },-
141 { 8, "WARNING ", LOG_WARNING },-
142 { 5, "WARN ", LOG_WARNING },-
143 { 4, "WAR ", LOG_WARNING },-
144 { 7, "NOTICE ", LOG_NOTICE },-
145 { 5, "NOTE ", LOG_NOTICE },-
146 { 4, "NOT ", LOG_NOTICE },-
147 { 5, "INFO ", LOG_INFO },-
148 { 4, "INF ", LOG_INFO },-
149 { 6, "DEBUG ", LOG_DEBUG },-
150 { 4, "DBG ", LOG_DEBUG },-
151 { 0, "", LOG_ERR } /* The default */-
152 };-
153-
154 if ((buf = malloc(inl + 1)) == NULL) {
(buf = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
155 return (0);
never executed: return (0);
0
156 }-
157 strlcpy(buf, in, inl + 1);-
158 i = 0;-
159 while (strncmp(buf, mapping[i].str, mapping[i].strl) != 0)
never executed: __result = (((const unsigned char *) (const char *) ( buf ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( mapping[i].str ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
(__extension__....strl ))) != 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...ping[i].strl )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( buf )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( buf )...ing[i].strl ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...pping[i].str )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( mappi...ing[i].strl ))Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
160 i++;
never executed: i++;
0
161 priority = mapping[i].log_level;-
162 pp = buf + mapping[i].strl;-
163-
164 xsyslog(b, priority, pp);-
165-
166 free(buf);-
167 return (ret);
never executed: return (ret);
0
168}-
169-
170static long-
171slg_ctrl(BIO *b, int cmd, long num, void *ptr)-
172{-
173 switch (cmd) {-
174 case BIO_CTRL_SET:
never executed: case 4:
0
175 xcloselog(b);-
176 xopenlog(b, ptr, num);-
177 break;
never executed: break;
0
178 default:
never executed: default:
0
179 break;
never executed: break;
0
180 }-
181 return (0);
never executed: return (0);
0
182}-
183-
184static int-
185slg_puts(BIO *bp, const char *str)-
186{-
187 int n, ret;-
188-
189 n = strlen(str);-
190 ret = slg_write(bp, str, n);-
191 return (ret);
never executed: return (ret);
0
192}-
193-
194-
195static void-
196xopenlog(BIO* bp, char* name, int level)-
197{-
198 openlog(name, LOG_PID|LOG_CONS, level);-
199}
never executed: end of block
0
200-
201static void-
202xsyslog(BIO *bp, int priority, const char *string)-
203{-
204 syslog(priority, "%s", string);-
205}
never executed: end of block
0
206-
207static void-
208xcloselog(BIO* bp)-
209{-
210 closelog();-
211}
never executed: end of block
0
212-
213#endif /* NO_SYSLOG */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2