OpenCoverage

conf_def.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/conf/conf_def.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10/* Part of the code in here was originally in conf.c, which is now removed */-
11-
12#include <stdio.h>-
13#include <string.h>-
14#include "internal/cryptlib.h"-
15#include "internal/o_dir.h"-
16#include <openssl/lhash.h>-
17#include <openssl/conf.h>-
18#include <openssl/conf_api.h>-
19#include "conf_def.h"-
20#include <openssl/buffer.h>-
21#include <openssl/err.h>-
22#ifndef OPENSSL_NO_POSIX_IO-
23# include <sys/stat.h>-
24# ifdef _WIN32-
25# define stat _stat-
26# define strcasecmp _stricmp-
27# endif-
28#endif-
29-
30#ifndef S_ISDIR-
31# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)-
32#endif-
33-
34/*-
35 * The maximum length we can grow a value to after variable expansion. 64k-
36 * should be more than enough for all reasonable uses.-
37 */-
38#define MAX_CONF_VALUE_LENGTH 65536-
39-
40static int is_keytype(const CONF *conf, char c, unsigned short type);-
41static char *eat_ws(CONF *conf, char *p);-
42static void trim_ws(CONF *conf, char *start);-
43static char *eat_alpha_numeric(CONF *conf, char *p);-
44static void clear_comments(CONF *conf, char *p);-
45static int str_copy(CONF *conf, char *section, char **to, char *from);-
46static char *scan_quote(CONF *conf, char *p);-
47static char *scan_dquote(CONF *conf, char *p);-
48#define scan_esc(conf,p) (((IS_EOF((conf),(p)[1]))?((p)+1):((p)+2)))-
49#ifndef OPENSSL_NO_POSIX_IO-
50static BIO *process_include(char *include, OPENSSL_DIR_CTX **dirctx,-
51 char **dirpath);-
52static BIO *get_next_file(const char *path, OPENSSL_DIR_CTX **dirctx);-
53#endif-
54-
55static CONF *def_create(CONF_METHOD *meth);-
56static int def_init_default(CONF *conf);-
57static int def_init_WIN32(CONF *conf);-
58static int def_destroy(CONF *conf);-
59static int def_destroy_data(CONF *conf);-
60static int def_load(CONF *conf, const char *name, long *eline);-
61static int def_load_bio(CONF *conf, BIO *bp, long *eline);-
62static int def_dump(const CONF *conf, BIO *bp);-
63static int def_is_number(const CONF *conf, char c);-
64static int def_to_int(const CONF *conf, char c);-
65-
66static CONF_METHOD default_method = {-
67 "OpenSSL default",-
68 def_create,-
69 def_init_default,-
70 def_destroy,-
71 def_destroy_data,-
72 def_load_bio,-
73 def_dump,-
74 def_is_number,-
75 def_to_int,-
76 def_load-
77};-
78-
79static CONF_METHOD WIN32_method = {-
80 "WIN32",-
81 def_create,-
82 def_init_WIN32,-
83 def_destroy,-
84 def_destroy_data,-
85 def_load_bio,-
86 def_dump,-
87 def_is_number,-
88 def_to_int,-
89 def_load-
90};-
91-
92CONF_METHOD *NCONF_default(void)-
93{-
94 return &default_method;
executed 4241 times by 1 test: return &default_method;
Executed by:
  • libcrypto.so.1.1
4241
95}-
96-
97CONF_METHOD *NCONF_WIN32(void)-
98{-
99 return &WIN32_method;
never executed: return &WIN32_method;
0
100}-
101-
102static CONF *def_create(CONF_METHOD *meth)-
103{-
104 CONF *ret;-
105-
106 ret = OPENSSL_malloc(sizeof(*ret));-
107 if (ret != NULL)
ret != ((void *)0)Description
TRUEevaluated 4240 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-4240
108 if (meth->init(ret) == 0) {
meth->init(ret) == 0Description
TRUEnever evaluated
FALSEevaluated 4240 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4240
109 OPENSSL_free(ret);-
110 ret = NULL;-
111 }
never executed: end of block
0
112 return ret;
executed 4240 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
4240
113}-
114-
115static int def_init_default(CONF *conf)-
116{-
117 if (conf == NULL)
conf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4468 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4468
118 return 0;
never executed: return 0;
0
119-
120 conf->meth = &default_method;-
121 conf->meth_data = (void *)CONF_type_default;-
122 conf->data = NULL;-
123-
124 return 1;
executed 4468 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4468
125}-
126-
127static int def_init_WIN32(CONF *conf)-
128{-
129 if (conf == NULL)
conf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
130 return 0;
never executed: return 0;
0
131-
132 conf->meth = &WIN32_method;-
133 conf->meth_data = (void *)CONF_type_win32;-
134 conf->data = NULL;-
135-
136 return 1;
never executed: return 1;
0
137}-
138-
139static int def_destroy(CONF *conf)-
140{-
141 if (def_destroy_data(conf)) {
def_destroy_data(conf)Description
TRUEevaluated 4240 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-4240
142 OPENSSL_free(conf);-
143 return 1;
executed 4240 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4240
144 }-
145 return 0;
never executed: return 0;
0
146}-
147-
148static int def_destroy_data(CONF *conf)-
149{-
150 if (conf == NULL)
conf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4468 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4468
151 return 0;
never executed: return 0;
0
152 _CONF_free_data(conf);-
153 return 1;
executed 4468 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4468
154}-
155-
156static int def_load(CONF *conf, const char *name, long *line)-
157{-
158 int ret;-
159 BIO *in = NULL;-
160-
161#ifdef OPENSSL_SYS_VMS-
162 in = BIO_new_file(name, "r");-
163#else-
164 in = BIO_new_file(name, "rb");-
165#endif-
166 if (in == NULL) {
in == ((void *)0)Description
TRUEevaluated 2090 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1661 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1661-2090
167 if (ERR_GET_REASON(ERR_peek_last_error()) == BIO_R_NO_SUCH_FILE)
(int)( (ERR_pe...0xFFFL) == 128Description
TRUEevaluated 2090 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-2090
168 CONFerr(CONF_F_DEF_LOAD, CONF_R_NO_SUCH_FILE);
executed 2090 times by 1 test: ERR_put_error(14,(120),(114),__FILE__,168);
Executed by:
  • libcrypto.so.1.1
2090
169 else-
170 CONFerr(CONF_F_DEF_LOAD, ERR_R_SYS_LIB);
never executed: ERR_put_error(14,(120),(2),__FILE__,170);
0
171 return 0;
executed 2090 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
2090
172 }-
173-
174 ret = def_load_bio(conf, in, line);-
175 BIO_free(in);-
176-
177 return ret;
executed 1661 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
1661
178}-
179-
180static int def_load_bio(CONF *conf, BIO *in, long *line)-
181{-
182/* The macro BUFSIZE conflicts with a system macro in VxWorks */-
183#define CONFBUFSIZE 512-
184 int bufnum = 0, i, ii;-
185 BUF_MEM *buff = NULL;-
186 char *s, *p, *end;-
187 int again;-
188 long eline = 0;-
189 char btmp[DECIMAL_SIZE(eline) + 1];-
190 CONF_VALUE *v = NULL, *tv;-
191 CONF_VALUE *sv = NULL;-
192 char *section = NULL, *buf;-
193 char *start, *psection, *pname;-
194 void *h = (void *)(conf->data);-
195 STACK_OF(BIO) *biosk = NULL;-
196#ifndef OPENSSL_NO_POSIX_IO-
197 char *dirpath = NULL;-
198 OPENSSL_DIR_CTX *dirctx = NULL;-
199#endif-
200-
201 if ((buff = BUF_MEM_new()) == NULL) {
(buff = BUF_ME...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2150 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2150
202 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_BUF_LIB);-
203 goto err;
never executed: goto err;
0
204 }-
205-
206 section = OPENSSL_strdup("default");-
207 if (section == NULL) {
section == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2150 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2150
208 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);-
209 goto err;
never executed: goto err;
0
210 }-
211-
212 if (_CONF_new_data(conf) == 0) {
_CONF_new_data(conf) == 0Description
TRUEnever evaluated
FALSEevaluated 2150 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2150
213 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);-
214 goto err;
never executed: goto err;
0
215 }-
216-
217 sv = _CONF_new_section(conf, section);-
218 if (sv == NULL) {
sv == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2150 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2150
219 CONFerr(CONF_F_DEF_LOAD_BIO, CONF_R_UNABLE_TO_CREATE_NEW_SECTION);-
220 goto err;
never executed: goto err;
0
221 }-
222-
223 bufnum = 0;-
224 again = 0;-
225 for (;;) {-
226 if (!BUF_MEM_grow(buff, bufnum + CONFBUFSIZE)) {
!BUF_MEM_grow(... bufnum + 512)Description
TRUEnever evaluated
FALSEevaluated 170269 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-170269
227 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_BUF_LIB);-
228 goto err;
never executed: goto err;
0
229 }-
230 p = &(buff->data[bufnum]);-
231 *p = '\0';-
232 read_retry:
code before this statement executed 170269 times by 1 test: read_retry:
Executed by:
  • libcrypto.so.1.1
170269
233 BIO_gets(in, p, CONFBUFSIZE - 1);-
234 p[CONFBUFSIZE - 1] = '\0';-
235 ii = i = strlen(p);-
236 if (i == 0 && !again) {
i == 0Description
TRUEevaluated 2987 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 167792 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
!againDescription
TRUEevaluated 2432 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 555 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
555-167792
237 /* the currently processed BIO is at EOF */-
238 BIO *parent;-
239-
240#ifndef OPENSSL_NO_POSIX_IO-
241 /* continue processing with the next file from directory */-
242 if (dirctx != NULL) {
dirctx != ((void *)0)Description
TRUEevaluated 510 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1922 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
510-1922
243 BIO *next;-
244-
245 if ((next = get_next_file(dirpath, &dirctx)) != NULL) {
(next = get_ne...!= ((void *)0)Description
TRUEevaluated 510 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-510
246 BIO_vfree(in);-
247 in = next;-
248 goto read_retry;
executed 510 times by 1 test: goto read_retry;
Executed by:
  • libcrypto.so.1.1
510
249 } else {-
250 OPENSSL_free(dirpath);-
251 dirpath = NULL;-
252 }
never executed: end of block
0
253 }-
254#endif-
255 /* no more files in directory, continue with processing parent */-
256 if ((parent = sk_BIO_pop(biosk)) == NULL) {
(parent = sk_B...== ((void *)0)Description
TRUEevaluated 1922 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-1922
257 /* everything processed get out of the loop */-
258 break;
executed 1922 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
1922
259 } else {-
260 BIO_vfree(in);-
261 in = parent;-
262 goto read_retry;
never executed: goto read_retry;
0
263 }-
264 }-
265 again = 0;-
266 while (i > 0) {
i > 0Description
TRUEevaluated 290842 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 44157 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
44157-290842
267 if ((p[i - 1] != '\r') && (p[i - 1] != '\n'))
(p[i - 1] != '\r')Description
TRUEevaluated 290622 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 220 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(p[i - 1] != '\n')Description
TRUEevaluated 124190 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 166432 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
220-290622
268 break;
executed 124190 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
124190
269 else-
270 i--;
executed 166652 times by 1 test: i--;
Executed by:
  • libcrypto.so.1.1
166652
271 }-
272 /*-
273 * we removed some trailing stuff so there is a new line on the end.-
274 */-
275 if (ii && i == ii)
iiDescription
TRUEevaluated 167792 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 555 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
i == iiDescription
TRUEevaluated 1351 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 166441 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
555-167792
276 again = 1; /* long line */
executed 1351 times by 1 test: again = 1;
Executed by:
  • libcrypto.so.1.1
1351
277 else {-
278 p[i] = '\0';-
279 eline++; /* another input line */-
280 }
executed 166996 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
166996
281-
282 /* we now have a line with trailing \r\n removed */-
283-
284 /* i is the number of bytes */-
285 bufnum += i;-
286-
287 v = NULL;-
288 /* check for line continuation */-
289 if (bufnum >= 1) {
bufnum >= 1Description
TRUEevaluated 124589 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 43758 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
43758-124589
290 /*-
291 * If we have bytes and the last char '\\' and second last char-
292 * is not '\\'-
293 */-
294 p = &(buff->data[bufnum - 1]);-
295 if (IS_ESC(conf, p[0]) && ((bufnum <= 1) || !IS_ESC(conf, p[-1]))) {
is_keytype(conf, p[0], 32)Description
TRUEevaluated 1139 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 123450 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(bufnum <= 1)Description
TRUEevaluated 232 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 907 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
!is_keytype(conf, p[-1], 32)Description
TRUEevaluated 441 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 466 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
232-123450
296 bufnum--;-
297 again = 1;-
298 }
executed 673 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
673
299 }
executed 124589 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
124589
300 if (again)
againDescription
TRUEevaluated 1964 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 166383 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1964-166383
301 continue;
executed 1964 times by 1 test: continue;
Executed by:
  • libcrypto.so.1.1
1964
302 bufnum = 0;-
303 buf = buff->data;-
304-
305 clear_comments(conf, buf);-
306 s = eat_ws(conf, buf);-
307 if (IS_EOF(conf, *s))
is_keytype(conf, *s, 8)Description
TRUEevaluated 51443 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 114940 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
51443-114940
308 continue; /* blank line */
executed 51443 times by 1 test: continue;
Executed by:
  • libcrypto.so.1.1
51443
309 if (*s == '[') {
*s == '['Description
TRUEevaluated 25908 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 89032 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
25908-89032
310 char *ss;-
311-
312 s++;-
313 start = eat_ws(conf, s);-
314 ss = start;-
315 again:
code before this statement executed 25908 times by 1 test: again:
Executed by:
  • libcrypto.so.1.1
25908
316 end = eat_alpha_numeric(conf, ss);-
317 p = eat_ws(conf, end);-
318 if (*p != ']') {
*p != ']'Description
TRUEevaluated 1478 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 25881 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1478-25881
319 if (*p != '\0' && ss != p) {
*p != '\0'Description
TRUEevaluated 1462 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 16 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
ss != pDescription
TRUEevaluated 1451 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 11 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
11-1462
320 ss = p;-
321 goto again;
executed 1451 times by 1 test: goto again;
Executed by:
  • libcrypto.so.1.1
1451
322 }-
323 CONFerr(CONF_F_DEF_LOAD_BIO,-
324 CONF_R_MISSING_CLOSE_SQUARE_BRACKET);-
325 goto err;
executed 27 times by 1 test: goto err;
Executed by:
  • libcrypto.so.1.1
27
326 }-
327 *end = '\0';-
328 if (!str_copy(conf, NULL, &section, start))
!str_copy(conf...ection, start)Description
TRUEnever evaluated
FALSEevaluated 25881 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-25881
329 goto err;
never executed: goto err;
0
330 if ((sv = _CONF_get_section(conf, section)) == NULL)
(sv = _CONF_ge...== ((void *)0)Description
TRUEevaluated 24074 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1807 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1807-24074
331 sv = _CONF_new_section(conf, section);
executed 24074 times by 1 test: sv = _CONF_new_section(conf, section);
Executed by:
  • libcrypto.so.1.1
24074
332 if (sv == NULL) {
sv == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 25881 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-25881
333 CONFerr(CONF_F_DEF_LOAD_BIO,-
334 CONF_R_UNABLE_TO_CREATE_NEW_SECTION);-
335 goto err;
never executed: goto err;
0
336 }-
337 continue;
executed 25881 times by 1 test: continue;
Executed by:
  • libcrypto.so.1.1
25881
338 } else {-
339 pname = s;-
340 end = eat_alpha_numeric(conf, s);-
341 if ((end[0] == ':') && (end[1] == ':')) {
(end[0] == ':')Description
TRUEevaluated 8585 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 80447 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(end[1] == ':')Description
TRUEevaluated 8291 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 294 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
294-80447
342 *end = '\0';-
343 end += 2;-
344 psection = pname;-
345 pname = end;-
346 end = eat_alpha_numeric(conf, end);-
347 } else {
executed 8291 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
8291
348 psection = section;-
349 }
executed 80741 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
80741
350 p = eat_ws(conf, end);-
351 if (strncmp(pname, ".include", 8) == 0 && p != pname + 8) {
never executed: __result = (((const unsigned char *) (const char *) ( pname ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( ".include" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
(__extension__..." , 8 ))) == 0Description
TRUEevaluated 2044 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 86988 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__builtin_constant_p ( 8 )Description
TRUEevaluated 89032 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__builtin_constant_p ( pname )Description
TRUEnever evaluated
FALSEevaluated 89032 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
strlen ( pname...size_t) ( 8 ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...( ".include" )Description
TRUEevaluated 89032 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
strlen ( ".inc...size_t) ( 8 ))Description
TRUEnever evaluated
FALSEevaluated 89032 times by 1 test
Evaluated by:
  • libcrypto.so.1.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
p != pname + 8Description
TRUEevaluated 1851 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 193 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-89032
352 char *include = NULL;-
353 BIO *next;-
354-
355 trim_ws(conf, p);-
356 if (!str_copy(conf, psection, &include, p))
!str_copy(conf..., &include, p)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1850 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-1850
357 goto err;
executed 1 time by 1 test: goto err;
Executed by:
  • libcrypto.so.1.1
1
358 /* get the BIO of the included file */-
359#ifndef OPENSSL_NO_POSIX_IO-
360 next = process_include(include, &dirctx, &dirpath);-
361 if (include != dirpath) {
include != dirpathDescription
TRUEevaluated 1799 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
51-1799
362 /* dirpath will contain include in case of a directory */-
363 OPENSSL_free(include);-
364 }
executed 1799 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1799
365#else-
366 next = BIO_new_file(include, "r");-
367 OPENSSL_free(include);-
368#endif-
369 if (next != NULL) {
next != ((void *)0)Description
TRUEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1799 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
51-1799
370 /* push the currently processing BIO onto stack */-
371 if (biosk == NULL) {
biosk == ((void *)0)Description
TRUEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-51
372 if ((biosk = sk_BIO_new_null()) == NULL) {
(biosk = sk_BI...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-51
373 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);-
374 goto err;
never executed: goto err;
0
375 }-
376 }
executed 51 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
51
377 if (!sk_BIO_push(biosk, in)) {
!sk_BIO_push(biosk, in)Description
TRUEnever evaluated
FALSEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-51
378 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);-
379 goto err;
never executed: goto err;
0
380 }-
381 /* continue with reading from the included BIO */-
382 in = next;-
383 }
executed 51 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
51
384 continue;
executed 1850 times by 1 test: continue;
Executed by:
  • libcrypto.so.1.1
1850
385 } else if (*p != '=') {
*p != '='Description
TRUEevaluated 117 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 87064 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
117-87064
386 CONFerr(CONF_F_DEF_LOAD_BIO, CONF_R_MISSING_EQUAL_SIGN);-
387 goto err;
executed 117 times by 1 test: goto err;
Executed by:
  • libcrypto.so.1.1
117
388 }-
389 *end = '\0';-
390 p++;-
391 start = eat_ws(conf, p);-
392 trim_ws(conf, start);-
393-
394 if ((v = OPENSSL_malloc(sizeof(*v))) == NULL) {
(v = CRYPTO_ma...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 87064 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-87064
395 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);-
396 goto err;
never executed: goto err;
0
397 }-
398 v->name = OPENSSL_strdup(pname);-
399 v->value = NULL;-
400 if (v->name == NULL) {
v->name == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 87064 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-87064
401 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);-
402 goto err;
never executed: goto err;
0
403 }-
404 if (!str_copy(conf, psection, &(v->value), start))
!str_copy(conf...value), start)Description
TRUEevaluated 83 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 86981 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
83-86981
405 goto err;
executed 83 times by 1 test: goto err;
Executed by:
  • libcrypto.so.1.1
83
406-
407 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
TRUEevaluated 8211 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 78770 times by 1 test
Evaluated by:
  • libcrypto.so.1.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-78770
408 if ((tv = _CONF_get_section(conf, psection))
(tv = _CONF_ge...== ((void *)0)Description
TRUEevaluated 6992 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1219 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1219-6992
409 == NULL)
(tv = _CONF_ge...== ((void *)0)Description
TRUEevaluated 6992 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1219 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1219-6992
410 tv = _CONF_new_section(conf, psection);
executed 6992 times by 1 test: tv = _CONF_new_section(conf, psection);
Executed by:
  • libcrypto.so.1.1
6992
411 if (tv == NULL) {
tv == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 8211 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-8211
412 CONFerr(CONF_F_DEF_LOAD_BIO,-
413 CONF_R_UNABLE_TO_CREATE_NEW_SECTION);-
414 goto err;
never executed: goto err;
0
415 }-
416 } else
executed 8211 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
8211
417 tv = sv;
executed 78770 times by 1 test: tv = sv;
Executed by:
  • libcrypto.so.1.1
78770
418 if (_CONF_add_string(conf, tv, v) == 0) {
_CONF_add_stri...f, tv, v) == 0Description
TRUEnever evaluated
FALSEevaluated 86981 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-86981
419 CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);-
420 goto err;
never executed: goto err;
0
421 }-
422 v = NULL;-
423 }
executed 86981 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
86981
424 }-
425 BUF_MEM_free(buff);-
426 OPENSSL_free(section);-
427 /*-
428 * No need to pop, since we only get here if the stack is empty.-
429 * If this causes a BIO leak, THE ISSUE IS SOMEWHERE ELSE!-
430 */-
431 sk_BIO_free(biosk);-
432 return 1;
executed 1922 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1922
433 err:-
434 BUF_MEM_free(buff);-
435 OPENSSL_free(section);-
436 /*-
437 * Since |in| is the first element of the stack and should NOT be freed-
438 * here, we cannot use sk_BIO_pop_free(). Instead, we pop and free one-
439 * BIO at a time, making sure that the last one popped isn't.-
440 */-
441 while (sk_BIO_num(biosk) > 0) {
sk_BIO_num(biosk) > 0Description
TRUEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 228 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
51-228
442 BIO *popped = sk_BIO_pop(biosk);-
443 BIO_vfree(in);-
444 in = popped;-
445 }
executed 51 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
51
446 sk_BIO_free(biosk);-
447#ifndef OPENSSL_NO_POSIX_IO-
448 OPENSSL_free(dirpath);-
449 if (dirctx != NULL)
dirctx != ((void *)0)Description
TRUEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 177 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
51-177
450 OPENSSL_DIR_end(&dirctx);
executed 51 times by 1 test: OPENSSL_DIR_end(&dirctx);
Executed by:
  • libcrypto.so.1.1
51
451#endif-
452 if (line != NULL)
line != ((void *)0)Description
TRUEevaluated 228 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-228
453 *line = eline;
executed 228 times by 1 test: *line = eline;
Executed by:
  • libcrypto.so.1.1
228
454 BIO_snprintf(btmp, sizeof(btmp), "%ld", eline);-
455 ERR_add_error_data(2, "line ", btmp);-
456 if (h != conf->data) {
h != conf->dataDescription
TRUEevaluated 228 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-228
457 CONF_free(conf->data);-
458 conf->data = NULL;-
459 }
executed 228 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
228
460 if (v != NULL) {
v != ((void *)0)Description
TRUEevaluated 83 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 145 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
83-145
461 OPENSSL_free(v->name);-
462 OPENSSL_free(v->value);-
463 OPENSSL_free(v);-
464 }
executed 83 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
83
465 return 0;
executed 228 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
228
466}-
467-
468static void clear_comments(CONF *conf, char *p)-
469{-
470 for (;;) {-
471 if (IS_FCOMMENT(conf, *p)) {
is_keytype(conf, *p, 2048)Description
TRUEnever evaluated
FALSEevaluated 168202 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-168202
472 *p = '\0';-
473 return;
never executed: return;
0
474 }-
475 if (!IS_WS(conf, *p)) {
!is_keytype(conf, *p, 16)Description
TRUEevaluated 166383 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1819 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1819-166383
476 break;
executed 166383 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
166383
477 }-
478 p++;-
479 }
executed 1819 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1819
480-
481 for (;;) {-
482 if (IS_COMMENT(conf, *p)) {
is_keytype(conf, *p, 128)Description
TRUEevaluated 10086 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4784102 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
10086-4784102
483 *p = '\0';-
484 return;
executed 10086 times by 1 test: return;
Executed by:
  • libcrypto.so.1.1
10086
485 }-
486 if (IS_DQUOTE(conf, *p)) {
is_keytype(conf, *p, 1024)Description
TRUEnever evaluated
FALSEevaluated 4784102 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4784102
487 p = scan_dquote(conf, p);-
488 continue;
never executed: continue;
0
489 }-
490 if (IS_QUOTE(conf, *p)) {
is_keytype(conf, *p, 64)Description
TRUEevaluated 1632 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4782470 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1632-4782470
491 p = scan_quote(conf, p);-
492 continue;
executed 1632 times by 1 test: continue;
Executed by:
  • libcrypto.so.1.1
1632
493 }-
494 if (IS_ESC(conf, *p)) {
is_keytype(conf, *p, 32)Description
TRUEevaluated 3027 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4779443 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
3027-4779443
495 p = scan_esc(conf, p);
(is_keytype((c...), (p)[1], 8))Description
TRUEevaluated 221 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2806 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
221-2806
496 continue;
executed 3027 times by 1 test: continue;
Executed by:
  • libcrypto.so.1.1
3027
497 }-
498 if (IS_EOF(conf, *p))
is_keytype(conf, *p, 8)Description
TRUEevaluated 156297 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4623146 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
156297-4623146
499 return;
executed 156297 times by 1 test: return;
Executed by:
  • libcrypto.so.1.1
156297
500 else-
501 p++;
executed 4623146 times by 1 test: p++;
Executed by:
  • libcrypto.so.1.1
4623146
502 }-
503}
never executed: end of block
0
504-
505static int str_copy(CONF *conf, char *section, char **pto, char *from)-
506{-
507 int q, r, rr = 0, to = 0, len = 0;-
508 char *s, *e, *rp, *p, *rrp, *np, *cp, v;-
509 BUF_MEM *buf;-
510-
511 if ((buf = BUF_MEM_new()) == NULL)
(buf = BUF_MEM...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 114796 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-114796
512 return 0;
never executed: return 0;
0
513-
514 len = strlen(from) + 1;-
515 if (!BUF_MEM_grow(buf, len))
!BUF_MEM_grow(buf, len)Description
TRUEnever evaluated
FALSEevaluated 114796 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-114796
516 goto err;
never executed: goto err;
0
517-
518 for (;;) {-
519 if (IS_QUOTE(conf, *from)) {
is_keytype(conf, *from, 64)Description
TRUEevaluated 1597 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3639463 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1597-3639463
520 q = *from;-
521 from++;-
522 while (!IS_EOF(conf, *from) && (*from != q)) {
!is_keytype(conf, *from, 8)Description
TRUEevaluated 4235 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 544 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(*from != q)Description
TRUEevaluated 3527 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 708 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
544-4235
523 if (IS_ESC(conf, *from)) {
is_keytype(conf, *from, 32)Description
TRUEevaluated 1040 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2487 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1040-2487
524 from++;-
525 if (IS_EOF(conf, *from))
is_keytype(conf, *from, 8)Description
TRUEevaluated 345 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 695 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
345-695
526 break;
executed 345 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
345
527 }
executed 695 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
695
528 buf->data[to++] = *(from++);-
529 }
executed 3182 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
3182
530 if (*from == q)
*from == qDescription
TRUEevaluated 708 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 889 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
708-889
531 from++;
executed 708 times by 1 test: from++;
Executed by:
  • libcrypto.so.1.1
708
532 } else if (IS_DQUOTE(conf, *from)) {
executed 1597 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
is_keytype(conf, *from, 1024)Description
TRUEnever evaluated
FALSEevaluated 3639463 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-3639463
533 q = *from;-
534 from++;-
535 while (!IS_EOF(conf, *from)) {
!is_keytype(conf, *from, 8)Description
TRUEnever evaluated
FALSEnever evaluated
0
536 if (*from == q) {
*from == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
537 if (*(from + 1) == q) {
*(from + 1) == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
538 from++;-
539 } else {
never executed: end of block
0
540 break;
never executed: break;
0
541 }-
542 }-
543 buf->data[to++] = *(from++);-
544 }
never executed: end of block
0
545 if (*from == q)
*from == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
546 from++;
never executed: from++;
0
547 } else if (IS_ESC(conf, *from)) {
never executed: end of block
is_keytype(conf, *from, 32)Description
TRUEevaluated 1801 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3637662 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-3637662
548 from++;-
549 v = *(from++);-
550 if (IS_EOF(conf, v))
is_keytype(conf, v, 8)Description
TRUEevaluated 218 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1583 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
218-1583
551 break;
executed 218 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
218
552 else if (v == 'r')
v == 'r'Description
TRUEevaluated 230 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1353 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
230-1353
553 v = '\r';
executed 230 times by 1 test: v = '\r';
Executed by:
  • libcrypto.so.1.1
230
554 else if (v == 'n')
v == 'n'Description
TRUEevaluated 211 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1142 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
211-1142
555 v = '\n';
executed 211 times by 1 test: v = '\n';
Executed by:
  • libcrypto.so.1.1
211
556 else if (v == 'b')
v == 'b'Description
TRUEevaluated 216 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 926 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
216-926
557 v = '\b';
executed 216 times by 1 test: v = '\b';
Executed by:
  • libcrypto.so.1.1
216
558 else if (v == 't')
v == 't'Description
TRUEevaluated 198 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 728 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
198-728
559 v = '\t';
executed 198 times by 1 test: v = '\t';
Executed by:
  • libcrypto.so.1.1
198
560 buf->data[to++] = v;-
561 } else if (IS_EOF(conf, *from))
executed 1583 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
is_keytype(conf, *from, 8)Description
TRUEevaluated 114494 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3523168 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1583-3523168
562 break;
executed 114494 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
114494
563 else if (*from == '$') {
*from == '$'Description
TRUEevaluated 12778 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3510390 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
12778-3510390
564 size_t newsize;-
565-
566 /* try to expand it */-
567 rrp = NULL;-
568 s = &(from[1]);-
569 if (*s == '{')
*s == '{'Description
TRUEevaluated 4020 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 8758 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4020-8758
570 q = '}';
executed 4020 times by 1 test: q = '}';
Executed by:
  • libcrypto.so.1.1
4020
571 else if (*s == '(')
*s == '('Description
TRUEevaluated 194 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 8564 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
194-8564
572 q = ')';
executed 194 times by 1 test: q = ')';
Executed by:
  • libcrypto.so.1.1
194
573 else-
574 q = 0;
executed 8564 times by 1 test: q = 0;
Executed by:
  • libcrypto.so.1.1
8564
575-
576 if (q)
qDescription
TRUEevaluated 4214 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 8564 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4214-8564
577 s++;
executed 4214 times by 1 test: s++;
Executed by:
  • libcrypto.so.1.1
4214
578 cp = section;-
579 e = np = s;-
580 while (IS_ALNUM(conf, *e))
is_keytype(con...((2|4)|1|256))Description
TRUEevaluated 16525 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 12778 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
12778-16525
581 e++;
executed 16525 times by 1 test: e++;
Executed by:
  • libcrypto.so.1.1
16525
582 if ((e[0] == ':') && (e[1] == ':')) {
(e[0] == ':')Description
TRUEevaluated 4822 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 7956 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(e[1] == ':')Description
TRUEevaluated 4361 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 461 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
461-7956
583 cp = np;-
584 rrp = e;-
585 rr = *e;-
586 *rrp = '\0';-
587 e += 2;-
588 np = e;-
589 while (IS_ALNUM(conf, *e))
is_keytype(con...((2|4)|1|256))Description
TRUEevaluated 53936 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4361 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4361-53936
590 e++;
executed 53936 times by 1 test: e++;
Executed by:
  • libcrypto.so.1.1
53936
591 }
executed 4361 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
4361
592 r = *e;-
593 *e = '\0';-
594 rp = e;-
595 if (q) {
qDescription
TRUEevaluated 4214 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 8564 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4214-8564
596 if (r != q) {
r != qDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4206 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
8-4206
597 CONFerr(CONF_F_STR_COPY, CONF_R_NO_CLOSE_BRACE);-
598 goto err;
executed 8 times by 1 test: goto err;
Executed by:
  • libcrypto.so.1.1
8
599 }-
600 e++;-
601 }
executed 4206 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
4206
602 /*--
603 * So at this point we have-
604 * np which is the start of the name string which is-
605 * '\0' terminated.-
606 * cp which is the start of the section string which is-
607 * '\0' terminated.-
608 * e is the 'next point after'.-
609 * r and rr are the chars replaced by the '\0'-
610 * rp and rrp is where 'r' and 'rr' came from.-
611 */-
612 p = _CONF_get_string(conf, cp, np);-
613 if (rrp != NULL)
rrp != ((void *)0)Description
TRUEevaluated 4361 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 8409 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4361-8409
614 *rrp = rr;
executed 4361 times by 1 test: *rrp = rr;
Executed by:
  • libcrypto.so.1.1
4361
615 *rp = r;-
616 if (p == NULL) {
p == ((void *)0)Description
TRUEevaluated 74 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 12696 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
74-12696
617 CONFerr(CONF_F_STR_COPY, CONF_R_VARIABLE_HAS_NO_VALUE);-
618 goto err;
executed 74 times by 1 test: goto err;
Executed by:
  • libcrypto.so.1.1
74
619 }-
620 newsize = strlen(p) + buf->length - (e - from);-
621 if (newsize > MAX_CONF_VALUE_LENGTH) {
newsize > 65536Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 12694 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-12694
622 CONFerr(CONF_F_STR_COPY, CONF_R_VARIABLE_EXPANSION_TOO_LONG);-
623 goto err;
executed 2 times by 1 test: goto err;
Executed by:
  • libcrypto.so.1.1
2
624 }-
625 if (!BUF_MEM_grow_clean(buf, newsize)) {
!BUF_MEM_grow_...(buf, newsize)Description
TRUEnever evaluated
FALSEevaluated 12694 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-12694
626 CONFerr(CONF_F_STR_COPY, ERR_R_MALLOC_FAILURE);-
627 goto err;
never executed: goto err;
0
628 }-
629 while (*p)
*pDescription
TRUEevaluated 546253 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 12694 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
12694-546253
630 buf->data[to++] = *(p++);
executed 546253 times by 1 test: buf->data[to++] = *(p++);
Executed by:
  • libcrypto.so.1.1
546253
631-
632 /*-
633 * Since we change the pointer 'from', we also have to change the-
634 * perceived length of the string it points at. /RL-
635 */-
636 len -= e - from;-
637 from = e;-
638-
639 /*-
640 * In case there were no braces or parenthesis around the-
641 * variable reference, we have to put back the character that was-
642 * replaced with a '\0'. /RL-
643 */-
644 *rp = r;-
645 } else
executed 12694 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
12694
646 buf->data[to++] = *(from++);
executed 3510390 times by 1 test: buf->data[to++] = *(from++);
Executed by:
  • libcrypto.so.1.1
3510390
647 }-
648 buf->data[to] = '\0';-
649 OPENSSL_free(*pto);-
650 *pto = buf->data;-
651 OPENSSL_free(buf);-
652 return 1;
executed 114712 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
114712
653 err:-
654 BUF_MEM_free(buf);-
655 return 0;
executed 84 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
84
656}-
657-
658#ifndef OPENSSL_NO_POSIX_IO-
659/*-
660 * Check whether included path is a directory.-
661 * Returns next BIO to process and in case of a directory-
662 * also an opened directory context and the include path.-
663 */-
664static BIO *process_include(char *include, OPENSSL_DIR_CTX **dirctx,-
665 char **dirpath)-
666{-
667 struct stat st = { 0 };-
668 BIO *next;-
669-
670 if (stat(include, &st) < 0) {
stat(include, &st) < 0Description
TRUEevaluated 1668 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 182 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
182-1668
671 SYSerr(SYS_F_STAT, errno);-
672 ERR_add_error_data(1, include);-
673 /* missing include file is not fatal error */-
674 return NULL;
executed 1668 times by 1 test: return ((void *)0) ;
Executed by:
  • libcrypto.so.1.1
1668
675 }-
676-
677 if (S_ISDIR(st.st_mode)) {
(((( st.st_mod... == (0040000))Description
TRUEevaluated 182 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-182
678 if (*dirctx != NULL) {
*dirctx != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 182 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-182
679 CONFerr(CONF_F_PROCESS_INCLUDE,-
680 CONF_R_RECURSIVE_DIRECTORY_INCLUDE);-
681 ERR_add_error_data(1, include);-
682 return NULL;
never executed: return ((void *)0) ;
0
683 }-
684 /* a directory, load its contents */-
685 if ((next = get_next_file(include, dirctx)) != NULL)
(next = get_ne...!= ((void *)0)Description
TRUEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 131 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
51-131
686 *dirpath = include;
executed 51 times by 1 test: *dirpath = include;
Executed by:
  • libcrypto.so.1.1
51
687 return next;
executed 182 times by 1 test: return next;
Executed by:
  • libcrypto.so.1.1
182
688 }-
689-
690 next = BIO_new_file(include, "r");-
691 return next;
never executed: return next;
0
692}-
693-
694/*-
695 * Get next file from the directory path.-
696 * Returns BIO of the next file to read and updates dirctx.-
697 */-
698static BIO *get_next_file(const char *path, OPENSSL_DIR_CTX **dirctx)-
699{-
700 const char *filename;-
701-
702 while ((filename = OPENSSL_DIR_read(dirctx, path)) != NULL) {
(filename = OP...!= ((void *)0)Description
TRUEevaluated 65371 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 131 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
131-65371
703 size_t namelen;-
704-
705 namelen = strlen(filename);-
706-
707-
708 if ((namelen > 5 && strcasecmp(filename + namelen - 5, ".conf") == 0)
namelen > 5Description
TRUEevaluated 64507 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 864 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
strcasecmp(fil... ".conf") == 0Description
TRUEevaluated 51 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 64456 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
51-64507
709 || (namelen > 4 && strcasecmp(filename + namelen - 4, ".cnf") == 0)) {
namelen > 4Description
TRUEevaluated 64582 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 738 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
strcasecmp(fil..., ".cnf") == 0Description
TRUEevaluated 510 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 64072 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
510-64582
710 size_t newlen;-
711 char *newpath;-
712 BIO *bio;-
713-
714 newlen = strlen(path) + namelen + 2;-
715 newpath = OPENSSL_zalloc(newlen);-
716 if (newpath == NULL) {
newpath == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 561 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-561
717 CONFerr(CONF_F_GET_NEXT_FILE, ERR_R_MALLOC_FAILURE);-
718 break;
never executed: break;
0
719 }-
720#ifdef OPENSSL_SYS_VMS-
721 /*-
722 * If the given path isn't clear VMS syntax,-
723 * we treat it as on Unix.-
724 */-
725 {-
726 size_t pathlen = strlen(path);-
727-
728 if (path[pathlen - 1] == ']' || path[pathlen - 1] == '>'-
729 || path[pathlen - 1] == ':') {-
730 /* Clear VMS directory syntax, just copy as is */-
731 OPENSSL_strlcpy(newpath, path, newlen);-
732 }-
733 }-
734#endif-
735 if (newpath[0] == '\0') {
newpath[0] == '\0'Description
TRUEevaluated 561 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-561
736 OPENSSL_strlcpy(newpath, path, newlen);-
737 OPENSSL_strlcat(newpath, "/", newlen);-
738 }
executed 561 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
561
739 OPENSSL_strlcat(newpath, filename, newlen);-
740-
741 bio = BIO_new_file(newpath, "r");-
742 OPENSSL_free(newpath);-
743 /* Errors when opening files are non-fatal. */-
744 if (bio != NULL)
bio != ((void *)0)Description
TRUEevaluated 561 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-561
745 return bio;
executed 561 times by 1 test: return bio;
Executed by:
  • libcrypto.so.1.1
561
746 }
never executed: end of block
0
747 }
executed 64810 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
64810
748 OPENSSL_DIR_end(dirctx);-
749 *dirctx = NULL;-
750 return NULL;
executed 131 times by 1 test: return ((void *)0) ;
Executed by:
  • libcrypto.so.1.1
131
751}-
752#endif-
753-
754static int is_keytype(const CONF *conf, char c, unsigned short type)-
755{-
756 const unsigned short * keytypes = (const unsigned short *) conf->meth_data;-
757 unsigned char key = (unsigned char)c;-
758-
759#ifdef CHARSET_EBCDIC-
760# if CHAR_BIT > 8-
761 if (key > 255) {-
762 /* key is out of range for os_toascii table */-
763 return 0;-
764 }-
765# endif-
766 /* convert key from ebcdic to ascii */-
767 key = os_toascii[key];-
768#endif-
769-
770 if (key > 127) {
key > 127Description
TRUEevaluated 49145 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 45625782 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
49145-45625782
771 /* key is not a seven bit ascii character */-
772 return 0;
executed 49145 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
49145
773 }-
774-
775 return (keytypes[key] & type) ? 1 : 0;
executed 45625782 times by 1 test: return (keytypes[key] & type) ? 1 : 0;
Executed by:
  • libcrypto.so.1.1
(keytypes[key] & type)Description
TRUEevaluated 1675579 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 43950203 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1675579-45625782
776}-
777-
778static char *eat_ws(CONF *conf, char *p)-
779{-
780 while (IS_WS(conf, *p) && (!IS_EOF(conf, *p)))
is_keytype(conf, *p, 16)Description
TRUEevaluated 177588 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 395746 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(!is_keytype(conf, *p, 8))Description
TRUEevaluated 177588 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-395746
781 p++;
executed 177588 times by 1 test: p++;
Executed by:
  • libcrypto.so.1.1
177588
782 return p;
executed 395746 times by 1 test: return p;
Executed by:
  • libcrypto.so.1.1
395746
783}-
784-
785static void trim_ws(CONF *conf, char *start)-
786{-
787 char *p = start;-
788-
789 while (!IS_EOF(conf, *p))
!is_keytype(conf, *p, 8)Description
TRUEevaluated 3316756 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 88915 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
88915-3316756
790 p++;
executed 3316756 times by 1 test: p++;
Executed by:
  • libcrypto.so.1.1
3316756
791 p--;-
792 while ((p >= start) && IS_WS(conf, *p))
(p >= start)Description
TRUEevaluated 78297 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 16545 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
is_keytype(conf, *p, 16)Description
TRUEevaluated 5927 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 72370 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
5927-78297
793 p--;
executed 5927 times by 1 test: p--;
Executed by:
  • libcrypto.so.1.1
5927
794 p++;-
795 *p = '\0';-
796}
executed 88915 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
88915
797-
798static char *eat_alpha_numeric(CONF *conf, char *p)-
799{-
800 for (;;) {-
801 if (IS_ESC(conf, *p)) {
is_keytype(conf, *p, 32)Description
TRUEevaluated 1343 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1107593 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1343-1107593
802 p = scan_esc(conf, p);
(is_keytype((c...), (p)[1], 8))Description
TRUEevaluated 215 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1128 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
215-1128
803 continue;
executed 1343 times by 1 test: continue;
Executed by:
  • libcrypto.so.1.1
1343
804 }-
805 if (!IS_ALNUM_PUNCT(conf, *p))
!is_keytype(co...4)|1|256|512))Description
TRUEevaluated 124682 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 982911 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
124682-982911
806 return p;
executed 124682 times by 1 test: return p;
Executed by:
  • libcrypto.so.1.1
124682
807 p++;-
808 }
executed 982911 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
982911
809}
never executed: end of block
0
810-
811static char *scan_quote(CONF *conf, char *p)-
812{-
813 int q = *p;-
814-
815 p++;-
816 while (!(IS_EOF(conf, *p)) && (*p != q)) {
!(is_keytype(conf, *p, 8))Description
TRUEevaluated 4492 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 716 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(*p != q)Description
TRUEevaluated 3771 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 721 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
716-4492
817 if (IS_ESC(conf, *p)) {
is_keytype(conf, *p, 32)Description
TRUEevaluated 1056 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2715 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1056-2715
818 p++;-
819 if (IS_EOF(conf, *p))
is_keytype(conf, *p, 8)Description
TRUEevaluated 195 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 861 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
195-861
820 return p;
executed 195 times by 1 test: return p;
Executed by:
  • libcrypto.so.1.1
195
821 }
executed 861 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
861
822 p++;-
823 }
executed 3576 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
3576
824 if (*p == q)
*p == qDescription
TRUEevaluated 721 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 716 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
716-721
825 p++;
executed 721 times by 1 test: p++;
Executed by:
  • libcrypto.so.1.1
721
826 return p;
executed 1437 times by 1 test: return p;
Executed by:
  • libcrypto.so.1.1
1437
827}-
828-
829static char *scan_dquote(CONF *conf, char *p)-
830{-
831 int q = *p;-
832-
833 p++;-
834 while (!(IS_EOF(conf, *p))) {
!(is_keytype(conf, *p, 8))Description
TRUEnever evaluated
FALSEnever evaluated
0
835 if (*p == q) {
*p == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
836 if (*(p + 1) == q) {
*(p + 1) == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
837 p++;-
838 } else {
never executed: end of block
0
839 break;
never executed: break;
0
840 }-
841 }-
842 p++;-
843 }
never executed: end of block
0
844 if (*p == q)
*p == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
845 p++;
never executed: p++;
0
846 return p;
never executed: return p;
0
847}-
848-
849static void dump_value_doall_arg(const CONF_VALUE *a, BIO *out)-
850{-
851 if (a->name)
a->nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
852 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
853 else-
854 BIO_printf(out, "[[%s]]\n", a->section);
never executed: BIO_printf(out, "[[%s]]\n", a->section);
0
855}-
856-
857IMPLEMENT_LHASH_DOALL_ARG_CONST(CONF_VALUE, BIO);
never executed: end of block
0
858-
859static int def_dump(const CONF *conf, BIO *out)-
860{-
861 lh_CONF_VALUE_doall_BIO(conf->data, dump_value_doall_arg, out);-
862 return 1;
never executed: return 1;
0
863}-
864-
865static int def_is_number(const CONF *conf, char c)-
866{-
867 return IS_NUMBER(conf, c);
executed 120 times by 1 test: return is_keytype(conf, c, 1);
Executed by:
  • libcrypto.so.1.1
120
868}-
869-
870static int def_to_int(const CONF *conf, char c)-
871{-
872 return c - '0';
executed 83 times by 1 test: return c - '0';
Executed by:
  • libcrypto.so.1.1
83
873}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2