OpenCoverage

conf_def.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/conf/conf_def.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: conf_def.c,v 1.32 2017/01/29 17:49:22 beck Exp $ */-
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
3 * All rights reserved.-
4 *-
5 * This package is an SSL implementation written-
6 * by Eric Young (eay@cryptsoft.com).-
7 * The implementation was written so as to conform with Netscapes SSL.-
8 *-
9 * This library is free for commercial and non-commercial use as long as-
10 * the following conditions are aheared to. The following conditions-
11 * apply to all code found in this distribution, be it the RC4, RSA,-
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation-
13 * included with this distribution is covered by the same copyright terms-
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
15 *-
16 * Copyright remains Eric Young's, and as such any Copyright notices in-
17 * the code are not to be removed.-
18 * If this package is used in a product, Eric Young should be given attribution-
19 * as the author of the parts of the library used.-
20 * This can be in the form of a textual message at program startup or-
21 * in documentation (online or textual) provided with the package.-
22 *-
23 * Redistribution and use in source and binary forms, with or without-
24 * modification, are permitted provided that the following conditions-
25 * are met:-
26 * 1. Redistributions of source code must retain the copyright-
27 * notice, this list of conditions and the following disclaimer.-
28 * 2. Redistributions in binary form must reproduce the above copyright-
29 * notice, this list of conditions and the following disclaimer in the-
30 * documentation and/or other materials provided with the distribution.-
31 * 3. All advertising materials mentioning features or use of this software-
32 * must display the following acknowledgement:-
33 * "This product includes cryptographic software written by-
34 * Eric Young (eay@cryptsoft.com)"-
35 * The word 'cryptographic' can be left out if the rouines from the library-
36 * being used are not cryptographic related :-).-
37 * 4. If you include any Windows specific code (or a derivative thereof) from-
38 * the apps directory (application code) you must include an acknowledgement:-
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
40 *-
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
51 * SUCH DAMAGE.-
52 *-
53 * The licence and distribution terms for any publically available version or-
54 * derivative of this code cannot be changed. i.e. this code cannot simply be-
55 * copied and put under another distribution licence-
56 * [including the GNU Public Licence.]-
57 */-
58-
59/* Part of the code in here was originally in conf.c, which is now removed */-
60-
61#include <stdio.h>-
62#include <string.h>-
63-
64#include <openssl/buffer.h>-
65#include <openssl/conf.h>-
66#include <openssl/conf_api.h>-
67#include <openssl/err.h>-
68#include <openssl/lhash.h>-
69#include <openssl/stack.h>-
70-
71#include "conf_def.h"-
72-
73static char *eat_ws(CONF *conf, char *p);-
74static char *eat_alpha_numeric(CONF *conf, char *p);-
75static void clear_comments(CONF *conf, char *p);-
76static int str_copy(CONF *conf, char *section, char **to, char *from);-
77static char *scan_quote(CONF *conf, char *p);-
78static char *scan_dquote(CONF *conf, char *p);-
79#define scan_esc(conf,p) (((IS_EOF((conf),(p)[1]))?((p)+1):((p)+2)))-
80-
81static CONF *def_create(CONF_METHOD *meth);-
82static int def_init_default(CONF *conf);-
83static int def_init_WIN32(CONF *conf);-
84static int def_destroy(CONF *conf);-
85static int def_destroy_data(CONF *conf);-
86static int def_load(CONF *conf, const char *name, long *eline);-
87static int def_load_bio(CONF *conf, BIO *bp, long *eline);-
88static int def_dump(const CONF *conf, BIO *bp);-
89static int def_is_number(const CONF *conf, char c);-
90static int def_to_int(const CONF *conf, char c);-
91-
92static CONF_METHOD default_method = {-
93 .name = "OpenSSL default",-
94 .create = def_create,-
95 .init = def_init_default,-
96 .destroy = def_destroy,-
97 .destroy_data = def_destroy_data,-
98 .load_bio = def_load_bio,-
99 .dump = def_dump,-
100 .is_number = def_is_number,-
101 .to_int = def_to_int,-
102 .load = def_load-
103};-
104-
105static CONF_METHOD WIN32_method = {-
106 "WIN32",-
107 def_create,-
108 def_init_WIN32,-
109 def_destroy,-
110 def_destroy_data,-
111 def_load_bio,-
112 def_dump,-
113 def_is_number,-
114 def_to_int,-
115 def_load-
116};-
117-
118CONF_METHOD *-
119NCONF_default(void)-
120{-
121 return &default_method;
executed 214 times by 2 tests: return &default_method;
Executed by:
  • freenull
  • libcrypto.so.44.0.1
214
122}-
123-
124CONF_METHOD *-
125NCONF_WIN32(void)-
126{-
127 return &WIN32_method;
never executed: return &WIN32_method;
0
128}-
129-
130static CONF *-
131def_create(CONF_METHOD *meth)-
132{-
133 CONF *ret;-
134-
135 ret = malloc(sizeof(CONF) + sizeof(unsigned short *));-
136 if (ret)
retDescription
TRUEevaluated 213 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-213
137 if (meth->init(ret) == 0) {
meth->init(ret) == 0Description
TRUEnever evaluated
FALSEevaluated 213 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-213
138 free(ret);-
139 ret = NULL;-
140 }
never executed: end of block
0
141 return ret;
executed 213 times by 1 test: return ret;
Executed by:
  • libcrypto.so.44.0.1
213
142}-
143-
144static int-
145def_init_default(CONF *conf)-
146{-
147 if (conf == NULL)
conf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 214 times by 2 tests
Evaluated by:
  • freenull
  • libcrypto.so.44.0.1
0-214
148 return 0;
never executed: return 0;
0
149-
150 conf->meth = &default_method;-
151 conf->meth_data = CONF_type_default;-
152 conf->data = NULL;-
153-
154 return 1;
executed 214 times by 2 tests: return 1;
Executed by:
  • freenull
  • libcrypto.so.44.0.1
214
155}-
156-
157static int-
158def_init_WIN32(CONF *conf)-
159{-
160 if (conf == NULL)
conf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
161 return 0;
never executed: return 0;
0
162-
163 conf->meth = &WIN32_method;-
164 conf->meth_data = (void *)CONF_type_win32;-
165 conf->data = NULL;-
166-
167 return 1;
never executed: return 1;
0
168}-
169-
170static int-
171def_destroy(CONF *conf)-
172{-
173 if (def_destroy_data(conf)) {
def_destroy_data(conf)Description
TRUEevaluated 213 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-213
174 free(conf);-
175 return 1;
executed 213 times by 1 test: return 1;
Executed by:
  • libcrypto.so.44.0.1
213
176 }-
177 return 0;
never executed: return 0;
0
178}-
179-
180static int-
181def_destroy_data(CONF *conf)-
182{-
183 if (conf == NULL)
conf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 214 times by 2 tests
Evaluated by:
  • freenull
  • libcrypto.so.44.0.1
0-214
184 return 0;
never executed: return 0;
0
185 _CONF_free_data(conf);-
186 return 1;
executed 214 times by 2 tests: return 1;
Executed by:
  • freenull
  • libcrypto.so.44.0.1
214
187}-
188-
189static int-
190def_load(CONF *conf, const char *name, long *line)-
191{-
192 int ret;-
193 BIO *in = NULL;-
194-
195 in = BIO_new_file(name, "rb");-
196 if (in == NULL) {
in == ((void *)0)Description
TRUEevaluated 211 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
2-211
197 if (ERR_GET_REASON(ERR_peek_last_error()) == BIO_R_NO_SUCH_FILE)
(int)((ERR_pee...0xfffL) == 128Description
TRUEevaluated 211 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-211
198 CONFerror(CONF_R_NO_SUCH_FILE);
executed 211 times by 1 test: ERR_put_error(14,(0xfff),(114),__FILE__,198);
Executed by:
  • libcrypto.so.44.0.1
211
199 else-
200 CONFerror(ERR_R_SYS_LIB);
never executed: ERR_put_error(14,(0xfff),(2),__FILE__,200);
0
201 return 0;
executed 211 times by 1 test: return 0;
Executed by:
  • libcrypto.so.44.0.1
211
202 }-
203-
204 ret = def_load_bio(conf, in, line);-
205 BIO_free(in);-
206-
207 return ret;
executed 2 times by 1 test: return ret;
Executed by:
  • libcrypto.so.44.0.1
2
208}-
209-
210static int-
211def_load_bio(CONF *conf, BIO *in, long *line)-
212{-
213/* The macro BUFSIZE conflicts with a system macro in VxWorks */-
214#define CONFBUFSIZE 512-
215 int bufnum = 0, i, ii;-
216 BUF_MEM *buff = NULL;-
217 char *s, *p, *end;-
218 int again;-
219 long eline = 0;-
220 CONF_VALUE *v = NULL, *tv;-
221 CONF_VALUE *sv = NULL;-
222 char *section = NULL, *buf;-
223 char *start, *psection, *pname;-
224 void *h = (void *)(conf->data);-
225-
226 if ((buff = BUF_MEM_new()) == NULL) {
(buff = BUF_ME...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-2
227 CONFerror(ERR_R_BUF_LIB);-
228 goto err;
never executed: goto err;
0
229 }-
230-
231 section = strdup("default");
executed 2 times by 1 test: __retval = (char *) memcpy (__retval, "default" , __len);
Executed by:
  • libcrypto.so.44.0.1
__retval != ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
__builtin_cons... ( "default" )Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
((size_t)(cons...fault" ) == 1)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-2
232 if (section == NULL) {
section == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-2
233 CONFerror(ERR_R_MALLOC_FAILURE);-
234 goto err;
never executed: goto err;
0
235 }-
236-
237 if (_CONF_new_data(conf) == 0) {
_CONF_new_data(conf) == 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-2
238 CONFerror(ERR_R_MALLOC_FAILURE);-
239 goto err;
never executed: goto err;
0
240 }-
241-
242 sv = _CONF_new_section(conf, section);-
243 if (sv == NULL) {
sv == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-2
244 CONFerror(CONF_R_UNABLE_TO_CREATE_NEW_SECTION);-
245 goto err;
never executed: goto err;
0
246 }-
247-
248 bufnum = 0;-
249 again = 0;-
250 for (;;) {-
251 if (!BUF_MEM_grow(buff, bufnum + CONFBUFSIZE)) {
!BUF_MEM_grow(... bufnum + 512)Description
TRUEnever evaluated
FALSEevaluated 60 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-60
252 CONFerror(ERR_R_BUF_LIB);-
253 goto err;
never executed: goto err;
0
254 }-
255 p = &(buff->data[bufnum]);-
256 *p = '\0';-
257 BIO_gets(in, p, CONFBUFSIZE - 1);-
258 p[CONFBUFSIZE - 1] = '\0';-
259 ii = i = strlen(p);-
260 if (i == 0 && !again)
i == 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 58 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
!againDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-58
261 break;
executed 2 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
2
262 again = 0;-
263 while (i > 0) {
i > 0Description
TRUEevaluated 100 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 16 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
16-100
264 if ((p[i - 1] != '\r') && (p[i - 1] != '\n'))
(p[i - 1] != '\r')Description
TRUEevaluated 100 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
(p[i - 1] != '\n')Description
TRUEevaluated 42 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 58 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-100
265 break;
executed 42 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
42
266 else-
267 i--;
executed 58 times by 1 test: i--;
Executed by:
  • libcrypto.so.44.0.1
58
268 }-
269 /* we removed some trailing stuff so there is a new-
270 * line on the end. */-
271 if (ii && i == ii)
iiDescription
TRUEevaluated 58 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
i == iiDescription
TRUEnever evaluated
FALSEevaluated 58 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-58
272 again = 1; /* long line */
never executed: again = 1;
0
273 else {-
274 p[i] = '\0';-
275 eline++; /* another input line */-
276 }
executed 58 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
58
277-
278 /* we now have a line with trailing \r\n removed */-
279-
280 /* i is the number of bytes */-
281 bufnum += i;-
282-
283 v = NULL;-
284 /* check for line continuation */-
285 if (bufnum >= 1) {
bufnum >= 1Description
TRUEevaluated 42 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 16 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
16-42
286 /* If we have bytes and the last char '\\' and-
287 * second last char is not '\\' */-
288 p = &(buff->data[bufnum - 1]);-
289 if (IS_ESC(conf, p[0]) &&
(((unsigned sh...[0])&0xff]&32)Description
TRUEnever evaluated
FALSEevaluated 42 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-42
290 ((bufnum <= 1) || !IS_ESC(conf, p[-1]))) {
(bufnum <= 1)Description
TRUEnever evaluated
FALSEnever evaluated
!(((unsigned s...-1])&0xff]&32)Description
TRUEnever evaluated
FALSEnever evaluated
0
291 bufnum--;-
292 again = 1;-
293 }
never executed: end of block
0
294 }
executed 42 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
42
295 if (again)
againDescription
TRUEnever evaluated
FALSEevaluated 58 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-58
296 continue;
never executed: continue;
0
297 bufnum = 0;-
298 buf = buff->data;-
299-
300 clear_comments(conf, buf);-
301 s = eat_ws(conf, buf);-
302 if (IS_EOF(conf, *s))
(((unsigned sh...[(*s)&0xff]&8)Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 28 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
28-30
303 continue; /* blank line */
executed 30 times by 1 test: continue;
Executed by:
  • libcrypto.so.44.0.1
30
304 if (*s == '[') {
*s == '['Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
4-24
305 char *ss;-
306-
307 s++;-
308 start = eat_ws(conf, s);-
309 ss = start;-
310again:
code before this statement executed 4 times by 1 test: again:
Executed by:
  • libcrypto.so.44.0.1
4
311 end = eat_alpha_numeric(conf, ss);-
312 p = eat_ws(conf, end);-
313 if (*p != ']') {
*p != ']'Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-4
314 if (*p != '\0' && ss != p) {
*p != '\0'Description
TRUEnever evaluated
FALSEnever evaluated
ss != pDescription
TRUEnever evaluated
FALSEnever evaluated
0
315 ss = p;-
316 goto again;
never executed: goto again;
0
317 }-
318 CONFerror(CONF_R_MISSING_CLOSE_SQUARE_BRACKET);-
319 goto err;
never executed: goto err;
0
320 }-
321 *end = '\0';-
322 if (!str_copy(conf, NULL, &section, start))
!str_copy(conf...ection, start)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-4
323 goto err;
never executed: goto err;
0
324 if ((sv = _CONF_get_section(conf, section)) == NULL)
(sv = _CONF_ge...== ((void *)0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-4
325 sv = _CONF_new_section(conf, section);
executed 4 times by 1 test: sv = _CONF_new_section(conf, section);
Executed by:
  • libcrypto.so.44.0.1
4
326 if (sv == NULL) {
sv == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-4
327 CONFerror(CONF_R_UNABLE_TO_CREATE_NEW_SECTION);-
328 goto err;
never executed: goto err;
0
329 }-
330 continue;
executed 4 times by 1 test: continue;
Executed by:
  • libcrypto.so.44.0.1
4
331 } else {-
332 pname = s;-
333 psection = NULL;-
334 end = eat_alpha_numeric(conf, s);-
335 if ((end[0] == ':') && (end[1] == ':')) {
(end[0] == ':')Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
(end[1] == ':')Description
TRUEnever evaluated
FALSEnever evaluated
0-24
336 *end = '\0';-
337 end += 2;-
338 psection = pname;-
339 pname = end;-
340 end = eat_alpha_numeric(conf, end);-
341 }
never executed: end of block
0
342 p = eat_ws(conf, end);-
343 if (*p != '=') {
*p != '='Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-24
344 CONFerror(CONF_R_MISSING_EQUAL_SIGN);-
345 goto err;
never executed: goto err;
0
346 }-
347 *end = '\0';-
348 p++;-
349 start = eat_ws(conf, p);-
350 while (!IS_EOF(conf, *p))
!(((unsigned s...[(*p)&0xff]&8)Description
TRUEevaluated 382 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
24-382
351 p++;
executed 382 times by 1 test: p++;
Executed by:
  • libcrypto.so.44.0.1
382
352 p--;-
353 while ((p != start) && (IS_WS(conf, *p)))
(p != start)Description
TRUEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
((((unsigned s...*p)&0xff]&16))Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-26
354 p--;
executed 2 times by 1 test: p--;
Executed by:
  • libcrypto.so.44.0.1
2
355 p++;-
356 *p = '\0';-
357-
358 if (!(v = malloc(sizeof(CONF_VALUE)))) {
!(v = malloc(s...(CONF_VALUE)))Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-24
359 CONFerror(ERR_R_MALLOC_FAILURE);-
360 goto err;
never executed: goto err;
0
361 }-
362 if (psection == NULL)
psection == ((void *)0)Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-24
363 psection = section;
executed 24 times by 1 test: psection = section;
Executed by:
  • libcrypto.so.44.0.1
24
364 v->name = strdup(pname);
never executed: __retval = (char *) memcpy (__retval, pname , __len);
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( pname )Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
((size_t)(cons... pname ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0-24
365 v->value = NULL;-
366 if (v->name == NULL) {
v->name == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-24
367 CONFerror(ERR_R_MALLOC_FAILURE);-
368 goto err;
never executed: goto err;
0
369 }-
370 if (!str_copy(conf, psection, &(v->value), start))
!str_copy(conf...value), start)Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-24
371 goto err;
never executed: goto err;
0
372-
373 if (strcmp(psection, section) != 0) {
never executed: __result = (((const unsigned char *) (const char *) ( psection ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( section ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) != 0Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
__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-24
374 if ((tv = _CONF_get_section(conf, psection))
(tv = _CONF_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
375 == NULL)
(tv = _CONF_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
376 tv = _CONF_new_section(conf, psection);
never executed: tv = _CONF_new_section(conf, psection);
0
377 if (tv == NULL) {
tv == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
378 CONFerror(CONF_R_UNABLE_TO_CREATE_NEW_SECTION);-
379 goto err;
never executed: goto err;
0
380 }-
381 } else
never executed: end of block
0
382 tv = sv;
executed 24 times by 1 test: tv = sv;
Executed by:
  • libcrypto.so.44.0.1
24
383-
384 if (_CONF_add_string(conf, tv, v) == 0) {
_CONF_add_stri...f, tv, v) == 0Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-24
385 CONFerror(ERR_R_MALLOC_FAILURE);-
386 goto err;
never executed: goto err;
0
387 }-
388 v = NULL;-
389 }
executed 24 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
24
390 }-
391 if (buff != NULL)
buff != ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-2
392 BUF_MEM_free(buff);
executed 2 times by 1 test: BUF_MEM_free(buff);
Executed by:
  • libcrypto.so.44.0.1
2
393 free(section);-
394 return (1);
executed 2 times by 1 test: return (1);
Executed by:
  • libcrypto.so.44.0.1
2
395-
396err:-
397 if (buff != NULL)
buff != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
398 BUF_MEM_free(buff);
never executed: BUF_MEM_free(buff);
0
399 free(section);-
400 if (line != NULL)
line != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
401 *line = eline;
never executed: *line = eline;
0
402 ERR_asprintf_error_data("line %ld", eline);-
403 if ((h != conf->data) && (conf->data != NULL)) {
(h != conf->data)Description
TRUEnever evaluated
FALSEnever evaluated
(conf->data != ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
404 CONF_free(conf->data);-
405 conf->data = NULL;-
406 }
never executed: end of block
0
407 if (v != NULL) {
v != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
408 free(v->name);-
409 free(v->value);-
410 free(v);-
411 }
never executed: end of block
0
412 return (0);
never executed: return (0);
0
413}-
414-
415static void-
416clear_comments(CONF *conf, char *p)-
417{-
418 for (;;) {-
419 if (IS_FCOMMENT(conf, *p)) {
(((unsigned sh...p)&0xff]&2048)Description
TRUEnever evaluated
FALSEevaluated 58 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-58
420 *p = '\0';-
421 return;
never executed: return;
0
422 }-
423 if (!IS_WS(conf, *p)) {
!(((unsigned s...(*p)&0xff]&16)Description
TRUEevaluated 58 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-58
424 break;
executed 58 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
58
425 }-
426 p++;-
427 }
never executed: end of block
0
428-
429 for (;;) {-
430 if (IS_COMMENT(conf, *p)) {
(((unsigned sh...*p)&0xff]&128)Description
TRUEevaluated 14 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 1212 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
14-1212
431 *p = '\0';-
432 return;
executed 14 times by 1 test: return;
Executed by:
  • libcrypto.so.44.0.1
14
433 }-
434 if (IS_DQUOTE(conf, *p)) {
(((unsigned sh...p)&0xff]&1024)Description
TRUEnever evaluated
FALSEevaluated 1212 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-1212
435 p = scan_dquote(conf, p);-
436 continue;
never executed: continue;
0
437 }-
438 if (IS_QUOTE(conf, *p)) {
(((unsigned sh...(*p)&0xff]&64)Description
TRUEnever evaluated
FALSEevaluated 1212 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-1212
439 p = scan_quote(conf, p);-
440 continue;
never executed: continue;
0
441 }-
442 if (IS_ESC(conf, *p)) {
(((unsigned sh...(*p)&0xff]&32)Description
TRUEnever evaluated
FALSEevaluated 1212 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-1212
443 p = scan_esc(conf, p);
((((unsigned s...[1])&0xff]&8))Description
TRUEnever evaluated
FALSEnever evaluated
0
444 continue;
never executed: continue;
0
445 }-
446 if (IS_EOF(conf, *p))
(((unsigned sh...[(*p)&0xff]&8)Description
TRUEevaluated 44 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 1168 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
44-1168
447 return;
executed 44 times by 1 test: return;
Executed by:
  • libcrypto.so.44.0.1
44
448 else-
449 p++;
executed 1168 times by 1 test: p++;
Executed by:
  • libcrypto.so.44.0.1
1168
450 }-
451}
never executed: end of block
0
452-
453static int-
454str_copy(CONF *conf, char *section, char **pto, char *from)-
455{-
456 int q, r,rr = 0, to = 0, len = 0;-
457 char *s, *e, *rp, *p, *rrp, *np, *cp, v;-
458 BUF_MEM *buf;-
459-
460 if ((buf = BUF_MEM_new()) == NULL)
(buf = BUF_MEM...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 28 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-28
461 return (0);
never executed: return (0);
0
462-
463 len = strlen(from) + 1;-
464 if (!BUF_MEM_grow(buf, len))
!BUF_MEM_grow(buf, len)Description
TRUEnever evaluated
FALSEevaluated 28 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-28
465 goto err;
never executed: goto err;
0
466-
467 for (;;) {-
468 if (IS_QUOTE(conf, *from)) {
(((unsigned sh...rom)&0xff]&64)Description
TRUEnever evaluated
FALSEevaluated 434 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-434
469 q = *from;-
470 from++;-
471 while (!IS_EOF(conf, *from) && (*from != q)) {
!(((unsigned s...from)&0xff]&8)Description
TRUEnever evaluated
FALSEnever evaluated
(*from != q)Description
TRUEnever evaluated
FALSEnever evaluated
0
472 if (IS_ESC(conf, *from)) {
(((unsigned sh...rom)&0xff]&32)Description
TRUEnever evaluated
FALSEnever evaluated
0
473 from++;-
474 if (IS_EOF(conf, *from))
(((unsigned sh...from)&0xff]&8)Description
TRUEnever evaluated
FALSEnever evaluated
0
475 break;
never executed: break;
0
476 }
never executed: end of block
0
477 buf->data[to++] = *(from++);-
478 }
never executed: end of block
0
479 if (*from == q)
*from == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
480 from++;
never executed: from++;
0
481 } else if (IS_DQUOTE(conf, *from)) {
never executed: end of block
(((unsigned sh...m)&0xff]&1024)Description
TRUEnever evaluated
FALSEevaluated 434 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-434
482 q = *from;-
483 from++;-
484 while (!IS_EOF(conf, *from)) {
!(((unsigned s...from)&0xff]&8)Description
TRUEnever evaluated
FALSEnever evaluated
0
485 if (*from == q) {
*from == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
486 if (*(from + 1) == q) {
*(from + 1) == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
487 from++;-
488 } else {
never executed: end of block
0
489 break;
never executed: break;
0
490 }-
491 }-
492 buf->data[to++] = *(from++);-
493 }
never executed: end of block
0
494 if (*from == q)
*from == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
495 from++;
never executed: from++;
0
496 } else if (IS_ESC(conf, *from)) {
never executed: end of block
(((unsigned sh...rom)&0xff]&32)Description
TRUEnever evaluated
FALSEevaluated 434 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-434
497 from++;-
498 v = *(from++);-
499 if (IS_EOF(conf, v))
(((unsigned sh...)[(v)&0xff]&8)Description
TRUEnever evaluated
FALSEnever evaluated
0
500 break;
never executed: break;
0
501 else if (v == 'r')
v == 'r'Description
TRUEnever evaluated
FALSEnever evaluated
0
502 v = '\r';
never executed: v = '\r';
0
503 else if (v == 'n')
v == 'n'Description
TRUEnever evaluated
FALSEnever evaluated
0
504 v = '\n';
never executed: v = '\n';
0
505 else if (v == 'b')
v == 'b'Description
TRUEnever evaluated
FALSEnever evaluated
0
506 v = '\b';
never executed: v = '\b';
0
507 else if (v == 't')
v == 't'Description
TRUEnever evaluated
FALSEnever evaluated
0
508 v = '\t';
never executed: v = '\t';
0
509 buf->data[to++] = v;-
510 } else if (IS_EOF(conf, *from))
never executed: end of block
(((unsigned sh...from)&0xff]&8)Description
TRUEevaluated 28 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 406 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-406
511 break;
executed 28 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
28
512 else if (*from == '$') {
*from == '$'Description
TRUEnever evaluated
FALSEevaluated 406 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-406
513 /* try to expand it */-
514 rrp = NULL;-
515 s = &(from[1]);-
516 if (*s == '{')
*s == '{'Description
TRUEnever evaluated
FALSEnever evaluated
0
517 q = '}';
never executed: q = '}';
0
518 else if (*s == '(')
*s == '('Description
TRUEnever evaluated
FALSEnever evaluated
0
519 q = ')';
never executed: q = ')';
0
520 else-
521 q = 0;
never executed: q = 0;
0
522-
523 if (q)
qDescription
TRUEnever evaluated
FALSEnever evaluated
0
524 s++;
never executed: s++;
0
525 cp = section;-
526 e = np = s;-
527 while (IS_ALPHA_NUMERIC(conf, *e))
(((unsigned sh...((2|4)|1|256))Description
TRUEnever evaluated
FALSEnever evaluated
0
528 e++;
never executed: e++;
0
529 if ((e[0] == ':') && (e[1] == ':')) {
(e[0] == ':')Description
TRUEnever evaluated
FALSEnever evaluated
(e[1] == ':')Description
TRUEnever evaluated
FALSEnever evaluated
0
530 cp = np;-
531 rrp = e;-
532 rr = *e;-
533 *rrp = '\0';-
534 e += 2;-
535 np = e;-
536 while (IS_ALPHA_NUMERIC(conf, *e))
(((unsigned sh...((2|4)|1|256))Description
TRUEnever evaluated
FALSEnever evaluated
0
537 e++;
never executed: e++;
0
538 }
never executed: end of block
0
539 r = *e;-
540 *e = '\0';-
541 rp = e;-
542 if (q) {
qDescription
TRUEnever evaluated
FALSEnever evaluated
0
543 if (r != q) {
r != qDescription
TRUEnever evaluated
FALSEnever evaluated
0
544 CONFerror(CONF_R_NO_CLOSE_BRACE);-
545 goto err;
never executed: goto err;
0
546 }-
547 e++;-
548 }
never executed: end of block
0
549 /* So at this point we have-
550 * np which is the start of the name string which is-
551 * '\0' terminated.-
552 * cp which is the start of the section string which is-
553 * '\0' terminated.-
554 * e is the 'next point after'.-
555 * r and rr are the chars replaced by the '\0'-
556 * rp and rrp is where 'r' and 'rr' came from.-
557 */-
558 p = _CONF_get_string(conf, cp, np);-
559 if (rrp != NULL)
rrp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
560 *rrp = rr;
never executed: *rrp = rr;
0
561 *rp = r;-
562 if (p == NULL) {
p == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
563 CONFerror(CONF_R_VARIABLE_HAS_NO_VALUE);-
564 goto err;
never executed: goto err;
0
565 }-
566 if (!BUF_MEM_grow_clean(buf,
!BUF_MEM_grow_...- (e - from)))Description
TRUEnever evaluated
FALSEnever evaluated
0
567 (strlen(p) + buf->length - (e - from)))) {
!BUF_MEM_grow_...- (e - from)))Description
TRUEnever evaluated
FALSEnever evaluated
0
568 CONFerror(CONF_R_MODULE_INITIALIZATION_ERROR);-
569 goto err;
never executed: goto err;
0
570 }-
571 while (*p)
*pDescription
TRUEnever evaluated
FALSEnever evaluated
0
572 buf->data[to++] = *(p++);
never executed: buf->data[to++] = *(p++);
0
573-
574 /* Since we change the pointer 'from', we also have-
575 to change the perceived length of the string it-
576 points at. /RL */-
577 len -= e - from;-
578 from = e;-
579-
580 /* In case there were no braces or parenthesis around-
581 the variable reference, we have to put back the-
582 character that was replaced with a '\0'. /RL */-
583 *rp = r;-
584 } else
never executed: end of block
0
585 buf->data[to++] = *(from++);
executed 406 times by 1 test: buf->data[to++] = *(from++);
Executed by:
  • libcrypto.so.44.0.1
406
586 }-
587 buf->data[to]='\0';-
588 free(*pto);-
589 *pto = buf->data;-
590 free(buf);-
591 return (1);
executed 28 times by 1 test: return (1);
Executed by:
  • libcrypto.so.44.0.1
28
592-
593err:-
594 if (buf != NULL)
buf != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
595 BUF_MEM_free(buf);
never executed: BUF_MEM_free(buf);
0
596 return (0);
never executed: return (0);
0
597}-
598-
599static char *-
600eat_ws(CONF *conf, char *p)-
601{-
602 while (IS_WS(conf, *p) && (!IS_EOF(conf, *p)))
(((unsigned sh...(*p)&0xff]&16)Description
TRUEevaluated 356 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 114 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
(!(((unsigned ...(*p)&0xff]&8))Description
TRUEevaluated 356 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-356
603 p++;
executed 356 times by 1 test: p++;
Executed by:
  • libcrypto.so.44.0.1
356
604 return (p);
executed 114 times by 1 test: return (p);
Executed by:
  • libcrypto.so.44.0.1
114
605}-
606-
607static char *-
608eat_alpha_numeric(CONF *conf, char *p)-
609{-
610 for (;;) {-
611 if (IS_ESC(conf, *p)) {
(((unsigned sh...(*p)&0xff]&32)Description
TRUEnever evaluated
FALSEevaluated 450 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-450
612 p = scan_esc(conf, p);
((((unsigned s...[1])&0xff]&8))Description
TRUEnever evaluated
FALSEnever evaluated
0
613 continue;
never executed: continue;
0
614 }-
615 if (!IS_ALPHA_NUMERIC_PUNCT(conf, *p))
!(((unsigned s...)|1|256| 512))Description
TRUEevaluated 28 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 422 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
28-422
616 return (p);
executed 28 times by 1 test: return (p);
Executed by:
  • libcrypto.so.44.0.1
28
617 p++;-
618 }
executed 422 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
422
619}
never executed: end of block
0
620-
621static char *-
622scan_quote(CONF *conf, char *p)-
623{-
624 int q = *p;-
625-
626 p++;-
627 while (!(IS_EOF(conf, *p)) && (*p != q)) {
!((((unsigned ...(*p)&0xff]&8))Description
TRUEnever evaluated
FALSEnever evaluated
(*p != q)Description
TRUEnever evaluated
FALSEnever evaluated
0
628 if (IS_ESC(conf, *p)) {
(((unsigned sh...(*p)&0xff]&32)Description
TRUEnever evaluated
FALSEnever evaluated
0
629 p++;-
630 if (IS_EOF(conf, *p))
(((unsigned sh...[(*p)&0xff]&8)Description
TRUEnever evaluated
FALSEnever evaluated
0
631 return (p);
never executed: return (p);
0
632 }
never executed: end of block
0
633 p++;-
634 }
never executed: end of block
0
635 if (*p == q)
*p == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
636 p++;
never executed: p++;
0
637 return (p);
never executed: return (p);
0
638}-
639-
640-
641static char *-
642scan_dquote(CONF *conf, char *p)-
643{-
644 int q = *p;-
645-
646 p++;-
647 while (!(IS_EOF(conf, *p))) {
!((((unsigned ...(*p)&0xff]&8))Description
TRUEnever evaluated
FALSEnever evaluated
0
648 if (*p == q) {
*p == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
649 if (*(p + 1) == q) {
*(p + 1) == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
650 p++;-
651 } else {
never executed: end of block
0
652 break;
never executed: break;
0
653 }-
654 }-
655 p++;-
656 }
never executed: end of block
0
657 if (*p == q)
*p == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
658 p++;
never executed: p++;
0
659 return (p);
never executed: return (p);
0
660}-
661-
662static void-
663dump_value_doall_arg(CONF_VALUE *a, BIO *out)-
664{-
665 if (a->name)
a->nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
666 BIO_printf(out, "[%s] %s=%s\n", a->section, a->name, a->value);
never executed: BIO_printf(out, "[%s] %s=%s\n", a->section, a->name, a->value);
0
667 else-
668 BIO_printf(out, "[[%s]]\n", a->section);
never executed: BIO_printf(out, "[[%s]]\n", a->section);
0
669}-
670-
671static
never executed: end of block
IMPLEMENT_LHASH_DOALL_ARG_FN(dump_value, CONF_VALUE, BIO)
never executed: end of block
0
672-
673static int-
674def_dump(const CONF *conf, BIO *out)-
675{-
676 lh_CONF_VALUE_doall_arg(conf->data, LHASH_DOALL_ARG_FN(dump_value),-
677 BIO, out);-
678 return 1;
never executed: return 1;
0
679}-
680-
681static int-
682def_is_number(const CONF *conf, char c)-
683{-
684 return IS_NUMBER(conf, c);
never executed: return (((unsigned short *)((conf)->meth_data))[(c)&0xff]&1);
0
685}-
686-
687static int-
688def_to_int(const CONF *conf, char c)-
689{-
690 return c - '0';
never executed: return c - '0';
0
691}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2