OpenCoverage

v3_info.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/x509v3/v3_info.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 1999-2017 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#include <stdio.h>-
11#include "internal/cryptlib.h"-
12#include <openssl/conf.h>-
13#include <openssl/asn1.h>-
14#include <openssl/asn1t.h>-
15#include <openssl/x509v3.h>-
16#include "ext_dat.h"-
17-
18static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD-
19 *method, AUTHORITY_INFO_ACCESS-
20 *ainfo, STACK_OF(CONF_VALUE)-
21 *ret);-
22static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD-
23 *method,-
24 X509V3_CTX *ctx,-
25 STACK_OF(CONF_VALUE)-
26 *nval);-
27-
28const X509V3_EXT_METHOD v3_info = { NID_info_access, X509V3_EXT_MULTILINE,-
29 ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS),-
30 0, 0, 0, 0,-
31 0, 0,-
32 (X509V3_EXT_I2V) i2v_AUTHORITY_INFO_ACCESS,-
33 (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS,-
34 0, 0,-
35 NULL-
36};-
37-
38const X509V3_EXT_METHOD v3_sinfo = { NID_sinfo_access, X509V3_EXT_MULTILINE,-
39 ASN1_ITEM_ref(AUTHORITY_INFO_ACCESS),-
40 0, 0, 0, 0,-
41 0, 0,-
42 (X509V3_EXT_I2V) i2v_AUTHORITY_INFO_ACCESS,-
43 (X509V3_EXT_V2I)v2i_AUTHORITY_INFO_ACCESS,-
44 0, 0,-
45 NULL-
46};-
47-
48ASN1_SEQUENCE(ACCESS_DESCRIPTION) = {-
49 ASN1_SIMPLE(ACCESS_DESCRIPTION, method, ASN1_OBJECT),-
50 ASN1_SIMPLE(ACCESS_DESCRIPTION, location, GENERAL_NAME)-
51} ASN1_SEQUENCE_END(ACCESS_DESCRIPTION)-
52-
53IMPLEMENT_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
never executed: end of block
never executed: return (ACCESS_DESCRIPTION *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(ACCESS_DESCRIPTION_it)));
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, (&(ACCESS_DESCRIPTION_it)));
never executed: return (ACCESS_DESCRIPTION *)ASN1_item_new((&(ACCESS_DESCRIPTION_it)));
0
54-
55ASN1_ITEM_TEMPLATE(AUTHORITY_INFO_ACCESS) =-
56 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, GeneralNames, ACCESS_DESCRIPTION)-
57ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS)-
58-
59IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
never executed: end of block
never executed: return (AUTHORITY_INFO_ACCESS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(AUTHORITY_INFO_ACCESS_it)));
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, (&(AUTHORITY_INFO_ACCESS_it)));
never executed: return (AUTHORITY_INFO_ACCESS *)ASN1_item_new((&(AUTHORITY_INFO_ACCESS_it)));
0
60-
61static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(-
62 X509V3_EXT_METHOD *method, AUTHORITY_INFO_ACCESS *ainfo,-
63 STACK_OF(CONF_VALUE) *ret)-
64{-
65 ACCESS_DESCRIPTION *desc;-
66 int i, nlen;-
67 char objtmp[80], *ntmp;-
68 CONF_VALUE *vtmp;-
69 STACK_OF(CONF_VALUE) *tret = ret;-
70-
71 for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) {
i < sk_ACCESS_...ION_num(ainfo)Description
TRUEevaluated 145 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 80 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
80-145
72 STACK_OF(CONF_VALUE) *tmp;-
73-
74 desc = sk_ACCESS_DESCRIPTION_value(ainfo, i);-
75 tmp = i2v_GENERAL_NAME(method, desc->location, tret);-
76 if (tmp == NULL)
tmp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 145 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-145
77 goto err;
never executed: goto err;
0
78 tret = tmp;-
79 vtmp = sk_CONF_VALUE_value(tret, i);-
80 i2t_ASN1_OBJECT(objtmp, sizeof(objtmp), desc->method);-
81 nlen = strlen(objtmp) + 3 + strlen(vtmp->name) + 1;-
82 ntmp = OPENSSL_malloc(nlen);-
83 if (ntmp == NULL)
ntmp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 145 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-145
84 goto err;
never executed: goto err;
0
85 BIO_snprintf(ntmp, nlen, "%s - %s", objtmp, vtmp->name);-
86 OPENSSL_free(vtmp->name);-
87 vtmp->name = ntmp;-
88 }
executed 145 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
145
89 if (ret == NULL && tret == NULL)
ret == ((void *)0)Description
TRUEevaluated 80 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
tret == ((void *)0)Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 73 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-80
90 return sk_CONF_VALUE_new_null();
executed 7 times by 1 test: return sk_CONF_VALUE_new_null();
Executed by:
  • libcrypto.so.1.1
7
91-
92 return tret;
executed 73 times by 1 test: return tret;
Executed by:
  • libcrypto.so.1.1
73
93 err:-
94 X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, ERR_R_MALLOC_FAILURE);-
95 if (ret == NULL && tret != NULL)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tret != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
96 sk_CONF_VALUE_pop_free(tret, X509V3_conf_free);
never executed: sk_CONF_VALUE_pop_free(tret, X509V3_conf_free);
0
97 return NULL;
never executed: return ((void *)0) ;
0
98}-
99-
100static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD-
101 *method,-
102 X509V3_CTX *ctx,-
103 STACK_OF(CONF_VALUE)-
104 *nval)-
105{-
106 AUTHORITY_INFO_ACCESS *ainfo = NULL;-
107 CONF_VALUE *cnf, ctmp;-
108 ACCESS_DESCRIPTION *acc;-
109 int i, objlen;-
110 const int num = sk_CONF_VALUE_num(nval);-
111 char *objtmp, *ptmp;-
112-
113 if ((ainfo = sk_ACCESS_DESCRIPTION_new_reserve(NULL, num)) == NULL) {
(ainfo = sk_AC...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
114 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS, ERR_R_MALLOC_FAILURE);-
115 return NULL;
never executed: return ((void *)0) ;
0
116 }-
117 for (i = 0; i < num; i++) {
i < numDescription
TRUEnever evaluated
FALSEnever evaluated
0
118 cnf = sk_CONF_VALUE_value(nval, i);-
119 if ((acc = ACCESS_DESCRIPTION_new()) == NULL) {
(acc = ACCESS_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
120 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,-
121 ERR_R_MALLOC_FAILURE);-
122 goto err;
never executed: goto err;
0
123 }-
124 sk_ACCESS_DESCRIPTION_push(ainfo, acc); /* Cannot fail due to reserve */-
125 ptmp = strchr(cnf->name, ';');
__builtin_constant_p ( ';' )Description
TRUEnever evaluated
FALSEnever evaluated
!__builtin_con... ( cnf->name )Description
TRUEnever evaluated
FALSEnever evaluated
( ';' ) == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
126 if (!ptmp) {
!ptmpDescription
TRUEnever evaluated
FALSEnever evaluated
0
127 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,-
128 X509V3_R_INVALID_SYNTAX);-
129 goto err;
never executed: goto err;
0
130 }-
131 objlen = ptmp - cnf->name;-
132 ctmp.name = ptmp + 1;-
133 ctmp.value = cnf->value;-
134 if (!v2i_GENERAL_NAME_ex(acc->location, method, ctx, &ctmp, 0))
!v2i_GENERAL_N...ctx, &ctmp, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
135 goto err;
never executed: goto err;
0
136 if ((objtmp = OPENSSL_strndup(cnf->name, objlen)) == NULL) {
(objtmp = CRYP...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
137 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,-
138 ERR_R_MALLOC_FAILURE);-
139 goto err;
never executed: goto err;
0
140 }-
141 acc->method = OBJ_txt2obj(objtmp, 0);-
142 if (!acc->method) {
!acc->methodDescription
TRUEnever evaluated
FALSEnever evaluated
0
143 X509V3err(X509V3_F_V2I_AUTHORITY_INFO_ACCESS,-
144 X509V3_R_BAD_OBJECT);-
145 ERR_add_error_data(2, "value=", objtmp);-
146 OPENSSL_free(objtmp);-
147 goto err;
never executed: goto err;
0
148 }-
149 OPENSSL_free(objtmp);-
150-
151 }
never executed: end of block
0
152 return ainfo;
never executed: return ainfo;
0
153 err:-
154 sk_ACCESS_DESCRIPTION_pop_free(ainfo, ACCESS_DESCRIPTION_free);-
155 return NULL;
never executed: return ((void *)0) ;
0
156}-
157-
158int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a)-
159{-
160 i2a_ASN1_OBJECT(bp, a->method);-
161 return 2;
never executed: return 2;
0
162}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2