OpenCoverage

conf_mod.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/conf/conf_mod.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: conf_mod.c,v 1.27 2017/01/29 17:49:22 beck Exp $ */-
2/* Written by Stephen Henson (steve@openssl.org) for the OpenSSL-
3 * project 2001.-
4 */-
5/* ====================================================================-
6 * Copyright (c) 2001 The OpenSSL Project. All rights reserved.-
7 *-
8 * Redistribution and use in source and binary forms, with or without-
9 * modification, are permitted provided that the following conditions-
10 * are met:-
11 *-
12 * 1. Redistributions of source code must retain the above copyright-
13 * notice, this list of conditions and the following disclaimer.-
14 *-
15 * 2. Redistributions in binary form must reproduce the above copyright-
16 * notice, this list of conditions and the following disclaimer in-
17 * the documentation and/or other materials provided with the-
18 * distribution.-
19 *-
20 * 3. All advertising materials mentioning features or use of this-
21 * software must display the following acknowledgment:-
22 * "This product includes software developed by the OpenSSL Project-
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"-
24 *-
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
26 * endorse or promote products derived from this software without-
27 * prior written permission. For written permission, please contact-
28 * licensing@OpenSSL.org.-
29 *-
30 * 5. Products derived from this software may not be called "OpenSSL"-
31 * nor may "OpenSSL" appear in their names without prior written-
32 * permission of the OpenSSL Project.-
33 *-
34 * 6. Redistributions of any form whatsoever must retain the following-
35 * acknowledgment:-
36 * "This product includes software developed by the OpenSSL Project-
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"-
38 *-
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
50 * OF THE POSSIBILITY OF SUCH DAMAGE.-
51 * ====================================================================-
52 *-
53 * This product includes cryptographic software written by Eric Young-
54 * (eay@cryptsoft.com). This product includes software written by Tim-
55 * Hudson (tjh@cryptsoft.com).-
56 *-
57 */-
58-
59#include <ctype.h>-
60#include <stdio.h>-
61#include <string.h>-
62#include <unistd.h>-
63-
64#include <openssl/conf.h>-
65#include <openssl/crypto.h>-
66#include <openssl/dso.h>-
67#include <openssl/err.h>-
68#include <openssl/x509.h>-
69-
70#define DSO_mod_init_name "OPENSSL_init"-
71#define DSO_mod_finish_name "OPENSSL_finish"-
72-
73/* This structure contains a data about supported modules.-
74 * entries in this table correspond to either dynamic or-
75 * static modules.-
76 */-
77-
78struct conf_module_st {-
79 /* DSO of this module or NULL if static */-
80 DSO *dso;-
81 /* Name of the module */-
82 char *name;-
83 /* Init function */-
84 conf_init_func *init;-
85 /* Finish function */-
86 conf_finish_func *finish;-
87 /* Number of successfully initialized modules */-
88 int links;-
89 void *usr_data;-
90};-
91-
92-
93/* This structure contains information about modules that have been-
94 * successfully initialized. There may be more than one entry for a-
95 * given module.-
96 */-
97-
98struct conf_imodule_st {-
99 CONF_MODULE *pmod;-
100 char *name;-
101 char *value;-
102 unsigned long flags;-
103 void *usr_data;-
104};-
105-
106static STACK_OF(CONF_MODULE) *supported_modules = NULL;-
107static STACK_OF(CONF_IMODULE) *initialized_modules = NULL;-
108-
109static void module_free(CONF_MODULE *md);-
110static void module_finish(CONF_IMODULE *imod);-
111static int module_run(const CONF *cnf, char *name, char *value,-
112 unsigned long flags);-
113static CONF_MODULE *module_add(DSO *dso, const char *name,-
114 conf_init_func *ifunc, conf_finish_func *ffunc);-
115static CONF_MODULE *module_find(char *name);-
116static int module_init(CONF_MODULE *pmod, char *name, char *value,-
117 const CONF *cnf);-
118static CONF_MODULE *module_load_dso(const CONF *cnf, char *name, char *value,-
119 unsigned long flags);-
120-
121/* Main function: load modules from a CONF structure */-
122-
123int-
124CONF_modules_load(const CONF *cnf, const char *appname, unsigned long flags)-
125{-
126 STACK_OF(CONF_VALUE) *values;-
127 CONF_VALUE *vl;-
128 char *vsection = NULL;-
129-
130 int ret, i;-
131-
132 if (!cnf)
!cnfDescription
TRUEnever evaluated
FALSEnever evaluated
0
133 return 1;
never executed: return 1;
0
134-
135 if (appname)
appnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
136 vsection = NCONF_get_string(cnf, NULL, appname);
never executed: vsection = NCONF_get_string(cnf, ((void *)0) , appname);
0
137-
138 if (!appname || (!vsection && (flags & CONF_MFLAGS_DEFAULT_SECTION)))
!appnameDescription
TRUEnever evaluated
FALSEnever evaluated
!vsectionDescription
TRUEnever evaluated
FALSEnever evaluated
(flags & 0x20)Description
TRUEnever evaluated
FALSEnever evaluated
0
139 vsection = NCONF_get_string(cnf, NULL, "openssl_conf");
never executed: vsection = NCONF_get_string(cnf, ((void *)0) , "openssl_conf");
0
140-
141 if (!vsection) {
!vsectionDescription
TRUEnever evaluated
FALSEnever evaluated
0
142 ERR_clear_error();-
143 return 1;
never executed: return 1;
0
144 }-
145-
146 values = NCONF_get_section(cnf, vsection);-
147-
148 if (!values)
!valuesDescription
TRUEnever evaluated
FALSEnever evaluated
0
149 return 0;
never executed: return 0;
0
150-
151 for (i = 0; i < sk_CONF_VALUE_num(values); i++) {
i < sk_num(((_...NF_VALUE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
152 vl = sk_CONF_VALUE_value(values, i);-
153 ret = module_run(cnf, vl->name, vl->value, flags);-
154 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
155 if (!(flags & CONF_MFLAGS_IGNORE_ERRORS))
!(flags & 0x1)Description
TRUEnever evaluated
FALSEnever evaluated
0
156 return ret;
never executed: return ret;
0
157 }
never executed: end of block
0
158-
159 return 1;
never executed: return 1;
0
160}-
161-
162int-
163CONF_modules_load_file(const char *filename, const char *appname,-
164 unsigned long flags)-
165{-
166 char *file = NULL;-
167 CONF *conf = NULL;-
168 int ret = 0;-
169 conf = NCONF_new(NULL);-
170 if (!conf)
!confDescription
TRUEnever evaluated
FALSEnever evaluated
0
171 goto err;
never executed: goto err;
0
172-
173 if (filename == NULL) {
filename == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
174 file = CONF_get1_default_config_file();-
175 if (!file)
!fileDescription
TRUEnever evaluated
FALSEnever evaluated
0
176 goto err;
never executed: goto err;
0
177 } else
never executed: end of block
0
178 file = (char *)filename;
never executed: file = (char *)filename;
0
179-
180 if (NCONF_load(conf, file, NULL) <= 0) {
NCONF_load(con...id *)0) ) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
181 if ((flags & CONF_MFLAGS_IGNORE_MISSING_FILE) &&
(flags & 0x10)Description
TRUEnever evaluated
FALSEnever evaluated
0
182 (ERR_GET_REASON(ERR_peek_last_error()) ==
((int)((ERR_pe...xfffL) == 114)Description
TRUEnever evaluated
FALSEnever evaluated
0
183 CONF_R_NO_SUCH_FILE)) {
((int)((ERR_pe...xfffL) == 114)Description
TRUEnever evaluated
FALSEnever evaluated
0
184 ERR_clear_error();-
185 ret = 1;-
186 }
never executed: end of block
0
187 goto err;
never executed: goto err;
0
188 }-
189-
190 ret = CONF_modules_load(conf, appname, flags);-
191-
192err:
code before this statement never executed: err:
0
193 if (filename == NULL)
filename == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
194 free(file);
never executed: free(file);
0
195 NCONF_free(conf);-
196-
197 return ret;
never executed: return ret;
0
198}-
199-
200static int-
201module_run(const CONF *cnf, char *name, char *value, unsigned long flags)-
202{-
203 CONF_MODULE *md;-
204 int ret;-
205-
206 md = module_find(name);-
207-
208 /* Module not found: try to load DSO */-
209 if (!md && !(flags & CONF_MFLAGS_NO_DSO))
!mdDescription
TRUEnever evaluated
FALSEnever evaluated
!(flags & 0x8)Description
TRUEnever evaluated
FALSEnever evaluated
0
210 md = module_load_dso(cnf, name, value, flags);
never executed: md = module_load_dso(cnf, name, value, flags);
0
211-
212 if (!md) {
!mdDescription
TRUEnever evaluated
FALSEnever evaluated
0
213 if (!(flags & CONF_MFLAGS_SILENT)) {
!(flags & 0x4)Description
TRUEnever evaluated
FALSEnever evaluated
0
214 CONFerror(CONF_R_UNKNOWN_MODULE_NAME);-
215 ERR_asprintf_error_data("module=%s", name);-
216 }
never executed: end of block
0
217 return -1;
never executed: return -1;
0
218 }-
219-
220 ret = module_init(md, name, value, cnf);-
221-
222 if (ret <= 0) {
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
223 if (!(flags & CONF_MFLAGS_SILENT)) {
!(flags & 0x4)Description
TRUEnever evaluated
FALSEnever evaluated
0
224 CONFerror(CONF_R_MODULE_INITIALIZATION_ERROR);-
225 ERR_asprintf_error_data-
226 ("module=%s, value=%s, retcode=%-8d",-
227 name, value, ret);-
228 }
never executed: end of block
0
229 }
never executed: end of block
0
230-
231 return ret;
never executed: return ret;
0
232}-
233-
234/* Load a module from a DSO */-
235static CONF_MODULE *-
236module_load_dso(const CONF *cnf, char *name, char *value, unsigned long flags)-
237{-
238 DSO *dso = NULL;-
239 conf_init_func *ifunc;-
240 conf_finish_func *ffunc;-
241 char *path = NULL;-
242 int errcode = 0;-
243 CONF_MODULE *md;-
244-
245 /* Look for alternative path in module section */-
246 path = NCONF_get_string(cnf, value, "path");-
247 if (!path) {
!pathDescription
TRUEnever evaluated
FALSEnever evaluated
0
248 ERR_clear_error();-
249 path = name;-
250 }
never executed: end of block
0
251 dso = DSO_load(NULL, path, NULL, 0);-
252 if (!dso) {
!dsoDescription
TRUEnever evaluated
FALSEnever evaluated
0
253 errcode = CONF_R_ERROR_LOADING_DSO;-
254 goto err;
never executed: goto err;
0
255 }-
256 ifunc = (conf_init_func *)DSO_bind_func(dso, DSO_mod_init_name);-
257 if (!ifunc) {
!ifuncDescription
TRUEnever evaluated
FALSEnever evaluated
0
258 errcode = CONF_R_MISSING_INIT_FUNCTION;-
259 goto err;
never executed: goto err;
0
260 }-
261 ffunc = (conf_finish_func *)DSO_bind_func(dso, DSO_mod_finish_name);-
262 /* All OK, add module */-
263 md = module_add(dso, name, ifunc, ffunc);-
264-
265 if (!md)
!mdDescription
TRUEnever evaluated
FALSEnever evaluated
0
266 goto err;
never executed: goto err;
0
267-
268 return md;
never executed: return md;
0
269-
270err:-
271 if (dso)
dsoDescription
TRUEnever evaluated
FALSEnever evaluated
0
272 DSO_free(dso);
never executed: DSO_free(dso);
0
273 CONFerror(errcode);-
274 ERR_asprintf_error_data("module=%s, path=%s", name, path);-
275 return NULL;
never executed: return ((void *)0) ;
0
276}-
277-
278/* add module to list */-
279static CONF_MODULE *-
280module_add(DSO *dso, const char *name, conf_init_func *ifunc,-
281 conf_finish_func *ffunc)-
282{-
283 CONF_MODULE *tmod = NULL;-
284-
285 if (name == NULL)
name == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • gost2814789t
0-2
286 return NULL;
never executed: return ((void *)0) ;
0
287 if (supported_modules == NULL)
supported_modu...== ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • gost2814789t
FALSEevaluated 1 time by 1 test
Evaluated by:
  • gost2814789t
1
288 supported_modules = sk_CONF_MODULE_new_null();
executed 1 time by 1 test: supported_modules = ((struct stack_st_CONF_MODULE *)sk_new_null());
Executed by:
  • gost2814789t
1
289 if (supported_modules == NULL)
supported_modu...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • gost2814789t
0-2
290 return NULL;
never executed: return ((void *)0) ;
0
291 tmod = malloc(sizeof(CONF_MODULE));-
292 if (tmod == NULL)
tmod == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • gost2814789t
0-2
293 return NULL;
never executed: return ((void *)0) ;
0
294-
295 tmod->dso = dso;-
296 tmod->name = strdup(name);
never executed: __retval = (char *) memcpy (__retval, name , __len);
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( name )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • gost2814789t
((size_t)(cons...( name ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0-2
297 tmod->init = ifunc;-
298 tmod->finish = ffunc;-
299 tmod->links = 0;-
300-
301 if (!sk_CONF_MODULE_push(supported_modules, tmod)) {
!sk_push(((_ST...F_MODULE*)0)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • gost2814789t
0-2
302 free(tmod);-
303 return NULL;
never executed: return ((void *)0) ;
0
304 }-
305-
306 return tmod;
executed 2 times by 1 test: return tmod;
Executed by:
  • gost2814789t
2
307}-
308-
309/* Find a module from the list. We allow module names of the-
310 * form modname.XXXX to just search for modname to allow the-
311 * same module to be initialized more than once.-
312 */-
313-
314static CONF_MODULE *-
315module_find(char *name)-
316{-
317 CONF_MODULE *tmod;-
318 int i, nchar;-
319 char *p;-
320-
321 p = strrchr(name, '.');-
322-
323 if (p)
pDescription
TRUEnever evaluated
FALSEnever evaluated
0
324 nchar = p - name;
never executed: nchar = p - name;
0
325 else-
326 nchar = strlen(name);
never executed: nchar = strlen(name);
0
327-
328 for (i = 0; i < sk_CONF_MODULE_num(supported_modules); i++) {
i < sk_num(((_...F_MODULE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
329 tmod = sk_CONF_MODULE_value(supported_modules, i);-
330 if (!strncmp(tmod->name, name, nchar))
never executed: __result = (((const unsigned char *) (const char *) ( tmod->name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( name ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! (__extension...me , nchar )))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( nchar )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...( tmod->name )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( tmod-..._t) ( nchar ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( name )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( name ..._t) ( nchar ))Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
331 return tmod;
never executed: return tmod;
0
332 }
never executed: end of block
0
333-
334 return NULL;
never executed: return ((void *)0) ;
0
335}-
336-
337/* initialize a module */-
338static int-
339module_init(CONF_MODULE *pmod, char *name, char *value, const CONF *cnf)-
340{-
341 int ret = 1;-
342 int init_called = 0;-
343 CONF_IMODULE *imod = NULL;-
344-
345 /* Otherwise add initialized module to list */-
346 imod = malloc(sizeof(CONF_IMODULE));-
347 if (!imod)
!imodDescription
TRUEnever evaluated
FALSEnever evaluated
0
348 goto err;
never executed: goto err;
0
349-
350 imod->pmod = pmod;-
351 imod->name = name ? strdup(name) : NULL;
never executed: __retval = (char *) memcpy (__retval, name , __len);
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
nameDescription
TRUEnever evaluated
FALSEnever evaluated
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( name )Description
TRUEnever evaluated
FALSEnever evaluated
((size_t)(cons...( name ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
352 imod->value = value ? strdup(value) : NULL;
never executed: __retval = (char *) memcpy (__retval, value , __len);
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
valueDescription
TRUEnever evaluated
FALSEnever evaluated
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( value )Description
TRUEnever evaluated
FALSEnever evaluated
((size_t)(cons... value ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
353 imod->usr_data = NULL;-
354-
355 if (!imod->name || !imod->value)
!imod->nameDescription
TRUEnever evaluated
FALSEnever evaluated
!imod->valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
356 goto memerr;
never executed: goto memerr;
0
357-
358 /* Try to initialize module */-
359 if (pmod->init) {
pmod->initDescription
TRUEnever evaluated
FALSEnever evaluated
0
360 ret = pmod->init(imod, cnf);-
361 init_called = 1;-
362 /* Error occurred, exit */-
363 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
364 goto err;
never executed: goto err;
0
365 }
never executed: end of block
0
366-
367 if (initialized_modules == NULL) {
initialized_mo...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
368 initialized_modules = sk_CONF_IMODULE_new_null();-
369 if (!initialized_modules) {
!initialized_modulesDescription
TRUEnever evaluated
FALSEnever evaluated
0
370 CONFerror(ERR_R_MALLOC_FAILURE);-
371 goto err;
never executed: goto err;
0
372 }-
373 }
never executed: end of block
0
374-
375 if (!sk_CONF_IMODULE_push(initialized_modules, imod)) {
!sk_push(((_ST..._IMODULE*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
376 CONFerror(ERR_R_MALLOC_FAILURE);-
377 goto err;
never executed: goto err;
0
378 }-
379-
380 pmod->links++;-
381-
382 return ret;
never executed: return ret;
0
383-
384err:-
385 /* We've started the module so we'd better finish it */-
386 if (pmod->finish && init_called)
pmod->finishDescription
TRUEnever evaluated
FALSEnever evaluated
init_calledDescription
TRUEnever evaluated
FALSEnever evaluated
0
387 pmod->finish(imod);
never executed: pmod->finish(imod);
0
388-
389memerr:
code before this statement never executed: memerr:
0
390 if (imod) {
imodDescription
TRUEnever evaluated
FALSEnever evaluated
0
391 free(imod->name);-
392 free(imod->value);-
393 free(imod);-
394 }
never executed: end of block
0
395-
396 return -1;
never executed: return -1;
0
397}-
398-
399/* Unload any dynamic modules that have a link count of zero:-
400 * i.e. have no active initialized modules. If 'all' is set-
401 * then all modules are unloaded including static ones.-
402 */-
403-
404void-
405CONF_modules_unload(int all)-
406{-
407 int i;-
408 CONF_MODULE *md;-
409-
410 CONF_modules_finish();-
411-
412 /* unload modules in reverse order */-
413 for (i = sk_CONF_MODULE_num(supported_modules) - 1; i >= 0; i--) {
i >= 0Description
TRUEnever evaluated
FALSEevaluated 211 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-211
414 md = sk_CONF_MODULE_value(supported_modules, i);-
415 /* If static or in use and 'all' not set ignore it */-
416 if (((md->links > 0) || !md->dso) && !all)
(md->links > 0)Description
TRUEnever evaluated
FALSEnever evaluated
!md->dsoDescription
TRUEnever evaluated
FALSEnever evaluated
!allDescription
TRUEnever evaluated
FALSEnever evaluated
0
417 continue;
never executed: continue;
0
418 /* Since we're working in reverse this is OK */-
419 (void)sk_CONF_MODULE_delete(supported_modules, i);-
420 module_free(md);-
421 }
never executed: end of block
0
422 if (sk_CONF_MODULE_num(supported_modules) == 0) {
sk_num(((_STAC...ULE*)0))) == 0Description
TRUEnever evaluated
FALSEevaluated 211 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-211
423 sk_CONF_MODULE_free(supported_modules);-
424 supported_modules = NULL;-
425 }
never executed: end of block
0
426}
executed 211 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
211
427-
428/* unload a single module */-
429static void-
430module_free(CONF_MODULE *md)-
431{-
432 if (md->dso)
md->dsoDescription
TRUEnever evaluated
FALSEnever evaluated
0
433 DSO_free(md->dso);
never executed: DSO_free(md->dso);
0
434 free(md->name);-
435 free(md);-
436}
never executed: end of block
0
437-
438/* finish and free up all modules instances */-
439-
440void-
441CONF_modules_finish(void)-
442{-
443 CONF_IMODULE *imod;-
444-
445 while (sk_CONF_IMODULE_num(initialized_modules) > 0) {
sk_num(((_STAC...DULE*)0))) > 0Description
TRUEnever evaluated
FALSEevaluated 211 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-211
446 imod = sk_CONF_IMODULE_pop(initialized_modules);-
447 module_finish(imod);-
448 }
never executed: end of block
0
449 sk_CONF_IMODULE_free(initialized_modules);-
450 initialized_modules = NULL;-
451}
executed 211 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
211
452-
453/* finish a module instance */-
454-
455static void-
456module_finish(CONF_IMODULE *imod)-
457{-
458 if (imod->pmod->finish)
imod->pmod->finishDescription
TRUEnever evaluated
FALSEnever evaluated
0
459 imod->pmod->finish(imod);
never executed: imod->pmod->finish(imod);
0
460 imod->pmod->links--;-
461 free(imod->name);-
462 free(imod->value);-
463 free(imod);-
464}
never executed: end of block
0
465-
466/* Add a static module to OpenSSL */-
467-
468int-
469CONF_module_add(const char *name, conf_init_func *ifunc,-
470 conf_finish_func *ffunc)-
471{-
472 if (module_add(NULL, name, ifunc, ffunc))
module_add( ((... ifunc, ffunc)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • gost2814789t
FALSEnever evaluated
0-2
473 return 1;
executed 2 times by 1 test: return 1;
Executed by:
  • gost2814789t
2
474 else-
475 return 0;
never executed: return 0;
0
476}-
477-
478void-
479CONF_modules_free(void)-
480{-
481 CONF_modules_finish();-
482 CONF_modules_unload(1);-
483}
never executed: end of block
0
484-
485/* Utility functions */-
486-
487const char *-
488CONF_imodule_get_name(const CONF_IMODULE *md)-
489{-
490 return md->name;
never executed: return md->name;
0
491}-
492-
493const char *-
494CONF_imodule_get_value(const CONF_IMODULE *md)-
495{-
496 return md->value;
never executed: return md->value;
0
497}-
498-
499void *-
500CONF_imodule_get_usr_data(const CONF_IMODULE *md)-
501{-
502 return md->usr_data;
never executed: return md->usr_data;
0
503}-
504-
505void-
506CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data)-
507{-
508 md->usr_data = usr_data;-
509}
never executed: end of block
0
510-
511CONF_MODULE *-
512CONF_imodule_get_module(const CONF_IMODULE *md)-
513{-
514 return md->pmod;
never executed: return md->pmod;
0
515}-
516-
517unsigned long-
518CONF_imodule_get_flags(const CONF_IMODULE *md)-
519{-
520 return md->flags;
never executed: return md->flags;
0
521}-
522-
523void-
524CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags)-
525{-
526 md->flags = flags;-
527}
never executed: end of block
0
528-
529void *-
530CONF_module_get_usr_data(CONF_MODULE *pmod)-
531{-
532 return pmod->usr_data;
never executed: return pmod->usr_data;
0
533}-
534-
535void-
536CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data)-
537{-
538 pmod->usr_data = usr_data;-
539}
never executed: end of block
0
540-
541/* Return default config file name */-
542-
543char *-
544CONF_get1_default_config_file(void)-
545{-
546 char *file = NULL;-
547-
548 if (asprintf(&file, "%s/openssl.cnf",
asprintf(&file..._area()) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
549 X509_get_default_cert_area()) == -1)
asprintf(&file..._area()) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
550 return (NULL);
never executed: return ( ((void *)0) );
0
551 return file;
never executed: return file;
0
552}-
553-
554/* This function takes a list separated by 'sep' and calls the-
555 * callback function giving the start and length of each member-
556 * optionally stripping leading and trailing whitespace. This can-
557 * be used to parse comma separated lists for example.-
558 */-
559-
560int-
561CONF_parse_list(const char *list_, int sep, int nospc,-
562 int (*list_cb)(const char *elem, int len, void *usr), void *arg)-
563{-
564 int ret;-
565 const char *lstart, *tmpend, *p;-
566-
567 if (list_ == NULL) {
list_ == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
568 CONFerror(CONF_R_LIST_CANNOT_BE_NULL);-
569 return 0;
never executed: return 0;
0
570 }-
571-
572 lstart = list_;-
573 for (;;) {-
574 if (nospc) {
nospcDescription
TRUEnever evaluated
FALSEnever evaluated
0
575 while (*lstart && isspace((unsigned char)*lstart))
*lstartDescription
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISspace)Description
TRUEnever evaluated
FALSEnever evaluated
0
576 lstart++;
never executed: lstart++;
0
577 }
never executed: end of block
0
578 p = strchr(lstart, sep);
__builtin_constant_p ( sep )Description
TRUEnever evaluated
FALSEnever evaluated
!__builtin_con...t_p ( lstart )Description
TRUEnever evaluated
FALSEnever evaluated
( sep ) == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
579 if (p == lstart || !*lstart)
p == lstartDescription
TRUEnever evaluated
FALSEnever evaluated
!*lstartDescription
TRUEnever evaluated
FALSEnever evaluated
0
580 ret = list_cb(NULL, 0, arg);
never executed: ret = list_cb( ((void *)0) , 0, arg);
0
581 else {-
582 if (p)
pDescription
TRUEnever evaluated
FALSEnever evaluated
0
583 tmpend = p - 1;
never executed: tmpend = p - 1;
0
584 else-
585 tmpend = lstart + strlen(lstart) - 1;
never executed: tmpend = lstart + strlen(lstart) - 1;
0
586 if (nospc) {
nospcDescription
TRUEnever evaluated
FALSEnever evaluated
0
587 while (isspace((unsigned char)*tmpend))
((*__ctype_b_l...int) _ISspace)Description
TRUEnever evaluated
FALSEnever evaluated
0
588 tmpend--;
never executed: tmpend--;
0
589 }
never executed: end of block
0
590 ret = list_cb(lstart, tmpend - lstart + 1, arg);-
591 }
never executed: end of block
0
592 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
593 return ret;
never executed: return ret;
0
594 if (p == NULL)
p == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
595 return 1;
never executed: return 1;
0
596 lstart = p + 1;-
597 }
never executed: end of block
0
598}
never executed: end of block
0
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2