OpenCoverage

a_object.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/a_object.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: a_object.c,v 1.31 2018/04/25 11:48:21 tb 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#include <limits.h>-
60#include <stdio.h>-
61#include <string.h>-
62-
63#include <openssl/asn1.h>-
64#include <openssl/bn.h>-
65#include <openssl/err.h>-
66#include <openssl/buffer.h>-
67#include <openssl/objects.h>-
68-
69int-
70i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp)-
71{-
72 unsigned char *p;-
73 int objsize;-
74-
75 if ((a == NULL) || (a->data == NULL))
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
(a->data == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
76 return (0);
never executed: return (0);
0
77-
78 objsize = ASN1_object_size(0, a->length, V_ASN1_OBJECT);-
79 if (pp == NULL)
pp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
80 return objsize;
never executed: return objsize;
0
81-
82 p = *pp;-
83 ASN1_put_object(&p, 0, a->length, V_ASN1_OBJECT, V_ASN1_UNIVERSAL);-
84 memcpy(p, a->data, a->length);-
85 p += a->length;-
86-
87 *pp = p;-
88 return (objsize);
never executed: return (objsize);
0
89}-
90-
91int-
92a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)-
93{-
94 int i, first, len = 0, c, use_bn;-
95 char ftmp[24], *tmp = ftmp;-
96 int tmpsize = sizeof ftmp;-
97 const char *p;-
98 unsigned long l;-
99 BIGNUM *bl = NULL;-
100-
101 if (num == 0)
num == 0Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-6
102 return (0);
never executed: return (0);
0
103 else if (num == -1)
num == -1Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-6
104 num = strlen(buf);
executed 6 times by 1 test: num = strlen(buf);
Executed by:
  • libcrypto.so.44.0.1
6
105-
106 p = buf;-
107 c = *(p++);-
108 num--;-
109 if ((c >= '0') && (c <= '2')) {
(c >= '0')Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
(c <= '2')Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-6
110 first= c-'0';-
111 } else {
executed 6 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
6
112 ASN1error(ASN1_R_FIRST_NUM_TOO_LARGE);-
113 goto err;
never executed: goto err;
0
114 }-
115-
116 if (num <= 0) {
num <= 0Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-6
117 ASN1error(ASN1_R_MISSING_SECOND_NUMBER);-
118 goto err;
never executed: goto err;
0
119 }-
120 c = *(p++);-
121 num--;-
122 for (;;) {-
123 if (num <= 0)
num <= 0Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
6-12
124 break;
executed 6 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
6
125 if ((c != '.') && (c != ' ')) {
(c != '.')Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
(c != ' ')Description
TRUEnever evaluated
FALSEnever evaluated
0-12
126 ASN1error(ASN1_R_INVALID_SEPARATOR);-
127 goto err;
never executed: goto err;
0
128 }-
129 l = 0;-
130 use_bn = 0;-
131 for (;;) {-
132 if (num <= 0)
num <= 0Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 42 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
6-42
133 break;
executed 6 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
6
134 num--;-
135 c = *(p++);-
136 if ((c == ' ') || (c == '.'))
(c == ' ')Description
TRUEnever evaluated
FALSEevaluated 42 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
(c == '.')Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 36 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-42
137 break;
executed 6 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
6
138 if ((c < '0') || (c > '9')) {
(c < '0')Description
TRUEnever evaluated
FALSEevaluated 36 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
(c > '9')Description
TRUEnever evaluated
FALSEevaluated 36 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-36
139 ASN1error(ASN1_R_INVALID_DIGIT);-
140 goto err;
never executed: goto err;
0
141 }-
142 if (!use_bn && l >= ((ULONG_MAX - 80) / 10L)) {
!use_bnDescription
TRUEevaluated 36 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEnever evaluated
l >= (( (0x7ff...) - 80) / 10L)Description
TRUEnever evaluated
FALSEevaluated 36 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-36
143 use_bn = 1;-
144 if (!bl)
!blDescription
TRUEnever evaluated
FALSEnever evaluated
0
145 bl = BN_new();
never executed: bl = BN_new();
0
146 if (!bl || !BN_set_word(bl, l))
!blDescription
TRUEnever evaluated
FALSEnever evaluated
!BN_set_word(bl, l)Description
TRUEnever evaluated
FALSEnever evaluated
0
147 goto err;
never executed: goto err;
0
148 }
never executed: end of block
0
149 if (use_bn) {
use_bnDescription
TRUEnever evaluated
FALSEevaluated 36 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-36
150 if (!BN_mul_word(bl, 10L) ||
!BN_mul_word(bl, 10L)Description
TRUEnever evaluated
FALSEnever evaluated
0
151 !BN_add_word(bl, c-'0'))
!BN_add_word(bl, c-'0')Description
TRUEnever evaluated
FALSEnever evaluated
0
152 goto err;
never executed: goto err;
0
153 } else
never executed: end of block
0
154 l = l * 10L + (long)(c - '0');
executed 36 times by 1 test: l = l * 10L + (long)(c - '0');
Executed by:
  • libcrypto.so.44.0.1
36
155 }-
156 if (len == 0) {
len == 0Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
6
157 if ((first < 2) && (l >= 40)) {
(first < 2)Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
(l >= 40)Description
TRUEnever evaluated
FALSEnever evaluated
0-6
158 ASN1error(ASN1_R_SECOND_NUMBER_TOO_LARGE);-
159 goto err;
never executed: goto err;
0
160 }-
161 if (use_bn) {
use_bnDescription
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-6
162 if (!BN_add_word(bl, first * 40))
!BN_add_word(bl, first * 40)Description
TRUEnever evaluated
FALSEnever evaluated
0
163 goto err;
never executed: goto err;
0
164 } else
never executed: end of block
0
165 l += (long)first * 40;
executed 6 times by 1 test: l += (long)first * 40;
Executed by:
  • libcrypto.so.44.0.1
6
166 }-
167 i = 0;-
168 if (use_bn) {
use_bnDescription
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-12
169 int blsize;-
170 blsize = BN_num_bits(bl);-
171 blsize = (blsize + 6) / 7;-
172 if (blsize > tmpsize) {
blsize > tmpsizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
173 if (tmp != ftmp)
tmp != ftmpDescription
TRUEnever evaluated
FALSEnever evaluated
0
174 free(tmp);
never executed: free(tmp);
0
175 tmpsize = blsize + 32;-
176 tmp = malloc(tmpsize);-
177 if (!tmp)
!tmpDescription
TRUEnever evaluated
FALSEnever evaluated
0
178 goto err;
never executed: goto err;
0
179 }
never executed: end of block
0
180 while (blsize--)
blsize--Description
TRUEnever evaluated
FALSEnever evaluated
0
181 tmp[i++] = (unsigned char)BN_div_word(bl, 0x80L);
never executed: tmp[i++] = (unsigned char)BN_div_word(bl, 0x80L);
0
182 } else {
never executed: end of block
0
183-
184 for (;;) {-
185 tmp[i++] = (unsigned char)l & 0x7f;-
186 l >>= 7L;-
187 if (l == 0L)
l == 0LDescription
TRUEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
12
188 break;
executed 12 times by 1 test: break;
Executed by:
  • libcrypto.so.44.0.1
12
189 }
executed 12 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
12
190-
191 }
executed 12 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
12
192 if (out != NULL) {
out != ((void *)0)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
6
193 if (len + i > olen) {
len + i > olenDescription
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-6
194 ASN1error(ASN1_R_BUFFER_TOO_SMALL);-
195 goto err;
never executed: goto err;
0
196 }-
197 while (--i > 0)
--i > 0Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
6
198 out[len++] = tmp[i]|0x80;
executed 6 times by 1 test: out[len++] = tmp[i]|0x80;
Executed by:
  • libcrypto.so.44.0.1
6
199 out[len++] = tmp[0];-
200 } else
executed 6 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
6
201 len += i;
executed 6 times by 1 test: len += i;
Executed by:
  • libcrypto.so.44.0.1
6
202 }-
203 if (tmp != ftmp)
tmp != ftmpDescription
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-6
204 free(tmp);
never executed: free(tmp);
0
205 BN_free(bl);-
206 return (len);
executed 6 times by 1 test: return (len);
Executed by:
  • libcrypto.so.44.0.1
6
207-
208err:-
209 if (tmp != ftmp)
tmp != ftmpDescription
TRUEnever evaluated
FALSEnever evaluated
0
210 free(tmp);
never executed: free(tmp);
0
211 BN_free(bl);-
212 return (0);
never executed: return (0);
0
213}-
214-
215int-
216i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a)-
217{-
218 return OBJ_obj2txt(buf, buf_len, a, 0);
executed 12 times by 1 test: return OBJ_obj2txt(buf, buf_len, a, 0);
Executed by:
  • libcrypto.so.44.0.1
12
219}-
220-
221int-
222i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a)-
223{-
224 char *tmp = NULL;-
225 size_t tlen = 256;-
226 int i = -1;-
227-
228 if ((a == NULL) || (a->data == NULL))
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
(a->data == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-12
229 return(BIO_write(bp, "NULL", 4));
never executed: return(BIO_write(bp, "NULL", 4));
0
230 if ((tmp = malloc(tlen)) == NULL)
(tmp = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-12
231 return -1;
never executed: return -1;
0
232 i = i2t_ASN1_OBJECT(tmp, tlen, a);-
233 if (i > (int)(tlen - 1)) {
i > (int)(tlen - 1)Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-12
234 freezero(tmp, tlen);-
235 if ((tmp = malloc(i + 1)) == NULL)
(tmp = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
236 return -1;
never executed: return -1;
0
237 tlen = i + 1;-
238 i = i2t_ASN1_OBJECT(tmp, tlen, a);-
239 }
never executed: end of block
0
240 if (i <= 0)
i <= 0Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-12
241 i = BIO_write(bp, "<INVALID>", 9);
never executed: i = BIO_write(bp, "<INVALID>", 9);
0
242 else-
243 i = BIO_write(bp, tmp, i);
executed 12 times by 1 test: i = BIO_write(bp, tmp, i);
Executed by:
  • libcrypto.so.44.0.1
12
244 freezero(tmp, tlen);-
245 return (i);
executed 12 times by 1 test: return (i);
Executed by:
  • libcrypto.so.44.0.1
12
246}-
247-
248ASN1_OBJECT *-
249d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long length)-
250{-
251 const unsigned char *p;-
252 long len;-
253 int tag, xclass;-
254 int inf, i;-
255 ASN1_OBJECT *ret = NULL;-
256-
257 p = *pp;-
258 inf = ASN1_get_object(&p, &len, &tag, &xclass, length);-
259 if (inf & 0x80) {
inf & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
0
260 i = ASN1_R_BAD_OBJECT_HEADER;-
261 goto err;
never executed: goto err;
0
262 }-
263-
264 if (tag != V_ASN1_OBJECT) {
tag != 6Description
TRUEnever evaluated
FALSEnever evaluated
0
265 i = ASN1_R_EXPECTING_AN_OBJECT;-
266 goto err;
never executed: goto err;
0
267 }-
268 ret = c2i_ASN1_OBJECT(a, &p, len);-
269 if (ret)
retDescription
TRUEnever evaluated
FALSEnever evaluated
0
270 *pp = p;
never executed: *pp = p;
0
271 return ret;
never executed: return ret;
0
272-
273err:-
274 ASN1error(i);-
275 return (NULL);
never executed: return ( ((void *)0) );
0
276}-
277-
278ASN1_OBJECT *-
279c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len)-
280{-
281 ASN1_OBJECT *ret;-
282 const unsigned char *p;-
283 unsigned char *data;-
284 int i, length;-
285-
286 /*-
287 * Sanity check OID encoding:-
288 * - need at least one content octet-
289 * - MSB must be clear in the last octet-
290 * - can't have leading 0x80 in subidentifiers, see: X.690 8.19.2-
291 */-
292 if (len <= 0 || len > INT_MAX || pp == NULL || (p = *pp) == NULL ||
len <= 0Description
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
len > 0x7fffffffDescription
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
pp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
(p = *pp) == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-3252
293 p[len - 1] & 0x80) {
p[len - 1] & 0x80Description
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-3252
294 ASN1error(ASN1_R_INVALID_OBJECT_ENCODING);-
295 return (NULL);
never executed: return ( ((void *)0) );
0
296 }-
297-
298 /* Now 0 < len <= INT_MAX, so the cast is safe. */-
299 length = (int)len;-
300 for (i = 0; i < length; i++, p++) {
i < lengthDescription
TRUEevaluated 14622 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
3252-14622
301 if (*p == 0x80 && (!i || !(p[-1] & 0x80))) {
*p == 0x80Description
TRUEnever evaluated
FALSEevaluated 14622 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
!iDescription
TRUEnever evaluated
FALSEnever evaluated
!(p[-1] & 0x80)Description
TRUEnever evaluated
FALSEnever evaluated
0-14622
302 ASN1error(ASN1_R_INVALID_OBJECT_ENCODING);-
303 return (NULL);
never executed: return ( ((void *)0) );
0
304 }-
305 }
executed 14622 times by 8 tests: end of block
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
14622
306-
307 /* only the ASN1_OBJECTs from the 'table' will have values-
308 * for ->sn or ->ln */-
309 if ((a == NULL) || ((*a) == NULL) ||
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
((*a) == ((void *)0) )Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEevaluated 3250 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-3252
310 !((*a)->flags & ASN1_OBJECT_FLAG_DYNAMIC)) {
!((*a)->flags & 0x01)Description
TRUEevaluated 3250 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEnever evaluated
0-3250
311 if ((ret = ASN1_OBJECT_new()) == NULL)
(ret = ASN1_OB...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-3252
312 return (NULL);
never executed: return ( ((void *)0) );
0
313 } else
executed 3252 times by 8 tests: end of block
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
3252
314 ret = *a;
never executed: ret = *a;
0
315-
316 p = *pp;-
317-
318 /* detach data from object */-
319 data = (unsigned char *)ret->data;-
320 freezero(data, ret->length);-
321-
322 data = malloc(length);-
323 if (data == NULL) {
data == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-3252
324 ASN1error(ERR_R_MALLOC_FAILURE);-
325 goto err;
never executed: goto err;
0
326 }-
327-
328 memcpy(data, p, length);-
329-
330 /* reattach data to object, after which it remains const */-
331 ret->data = data;-
332 ret->length = length;-
333 ret->sn = NULL;-
334 ret->ln = NULL;-
335 ret->flags |= ASN1_OBJECT_FLAG_DYNAMIC_DATA;-
336 p += length;-
337-
338 if (a != NULL)
a != ((void *)0)Description
TRUEevaluated 3252 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEnever evaluated
0-3252
339 *a = ret;
executed 3252 times by 8 tests: *a = ret;
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
3252
340 *pp = p;-
341 return (ret);
executed 3252 times by 8 tests: return (ret);
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
3252
342-
343err:-
344 if (a == NULL || ret != *a)
a == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ret != *aDescription
TRUEnever evaluated
FALSEnever evaluated
0
345 ASN1_OBJECT_free(ret);
never executed: ASN1_OBJECT_free(ret);
0
346 return (NULL);
never executed: return ( ((void *)0) );
0
347}-
348-
349ASN1_OBJECT *-
350ASN1_OBJECT_new(void)-
351{-
352 ASN1_OBJECT *ret;-
353-
354 ret = malloc(sizeof(ASN1_OBJECT));-
355 if (ret == NULL) {
ret == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 5096 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-5096
356 ASN1error(ERR_R_MALLOC_FAILURE);-
357 return (NULL);
never executed: return ( ((void *)0) );
0
358 }-
359 ret->length = 0;-
360 ret->data = NULL;-
361 ret->nid = 0;-
362 ret->sn = NULL;-
363 ret->ln = NULL;-
364 ret->flags = ASN1_OBJECT_FLAG_DYNAMIC;-
365 return (ret);
executed 5096 times by 8 tests: return (ret);
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
5096
366}-
367-
368void-
369ASN1_OBJECT_free(ASN1_OBJECT *a)-
370{-
371 if (a == NULL)
a == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEevaluated 5338 times by 9 tests
Evaluated by:
  • asn1test
  • gost2814789t
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
1-5338
372 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
373 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) {
a->flags & 0x04Description
TRUEevaluated 1844 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEevaluated 3494 times by 9 tests
Evaluated by:
  • asn1test
  • gost2814789t
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
1844-3494
374 free((void *)a->sn);-
375 free((void *)a->ln);-
376 a->sn = a->ln = NULL;-
377 }
executed 1844 times by 8 tests: end of block
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
1844
378 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) {
a->flags & 0x08Description
TRUEevaluated 4996 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEevaluated 342 times by 4 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • verifytest
342-4996
379 freezero((void *)a->data, a->length);-
380 a->data = NULL;-
381 a->length = 0;-
382 }
executed 4996 times by 8 tests: end of block
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
4996
383 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC)
a->flags & 0x01Description
TRUEevaluated 4996 times by 8 tests
Evaluated by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEevaluated 342 times by 4 tests
Evaluated by:
  • gost2814789t
  • libcrypto.so.44.0.1
  • pkcs7test
  • verifytest
342-4996
384 free(a);
executed 4996 times by 8 tests: free(a);
Executed by:
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
4996
385}
executed 5338 times by 9 tests: end of block
Executed by:
  • asn1test
  • gost2814789t
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
5338
386-
387ASN1_OBJECT *-
388ASN1_OBJECT_create(int nid, unsigned char *data, int len,-
389 const char *sn, const char *ln)-
390{-
391 ASN1_OBJECT o;-
392-
393 o.sn = sn;-
394 o.ln = ln;-
395 o.data = data;-
396 o.nid = nid;-
397 o.length = len;-
398 o.flags = ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |-
399 ASN1_OBJECT_FLAG_DYNAMIC_DATA;-
400 return (OBJ_dup(&o));
executed 3 times by 1 test: return (OBJ_dup(&o));
Executed by:
  • libcrypto.so.44.0.1
3
401}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2