OpenCoverage

asn1_lib.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/asn1/asn1_lib.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: asn1_lib.c,v 1.41 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/err.h>-
65-
66static int asn1_get_length(const unsigned char **pp, int *inf, long *rl, int max);-
67static void asn1_put_length(unsigned char **pp, int length);-
68-
69static int-
70_asn1_check_infinite_end(const unsigned char **p, long len)-
71{-
72 /* If there is 0 or 1 byte left, the length check should pick-
73 * things up */-
74 if (len <= 0)
len <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
75 return (1);
never executed: return (1);
0
76 else if ((len >= 2) && ((*p)[0] == 0) && ((*p)[1] == 0)) {
(len >= 2)Description
TRUEnever evaluated
FALSEnever evaluated
((*p)[0] == 0)Description
TRUEnever evaluated
FALSEnever evaluated
((*p)[1] == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
77 (*p) += 2;-
78 return (1);
never executed: return (1);
0
79 }-
80 return (0);
never executed: return (0);
0
81}-
82-
83int-
84ASN1_check_infinite_end(unsigned char **p, long len)-
85{-
86 return _asn1_check_infinite_end((const unsigned char **)p, len);
never executed: return _asn1_check_infinite_end((const unsigned char **)p, len);
0
87}-
88-
89int-
90ASN1_const_check_infinite_end(const unsigned char **p, long len)-
91{-
92 return _asn1_check_infinite_end(p, len);
never executed: return _asn1_check_infinite_end(p, len);
0
93}-
94-
95int-
96ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,-
97 int *pclass, long omax)-
98{-
99 int i, ret;-
100 long l;-
101 const unsigned char *p= *pp;-
102 int tag, xclass, inf;-
103 long max = omax;-
104-
105 if (!max)
!maxDescription
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-19196
106 goto err;
never executed: goto err;
0
107 ret = (*p & V_ASN1_CONSTRUCTED);-
108 xclass = (*p & V_ASN1_PRIVATE);-
109 i= *p & V_ASN1_PRIMITIVE_TAG;-
110 if (i == V_ASN1_PRIMITIVE_TAG) { /* high-tag */
i == 0x1fDescription
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-19196
111 p++;-
112 if (--max == 0)
--max == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
113 goto err;
never executed: goto err;
0
114 l = 0;-
115 while (*p & 0x80) {
*p & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
0
116 l <<= 7L;-
117 l |= *(p++) & 0x7f;-
118 if (--max == 0)
--max == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
119 goto err;
never executed: goto err;
0
120 if (l > (INT_MAX >> 7L))
l > (0x7fffffff >> 7L)Description
TRUEnever evaluated
FALSEnever evaluated
0
121 goto err;
never executed: goto err;
0
122 }
never executed: end of block
0
123 l <<= 7L;-
124 l |= *(p++) & 0x7f;-
125 tag = (int)l;-
126 if (--max == 0)
--max == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
127 goto err;
never executed: goto err;
0
128 } else {
never executed: end of block
0
129 tag = i;-
130 p++;-
131 if (--max == 0)
--max == 0Description
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-19196
132 goto err;
never executed: goto err;
0
133 }
executed 19196 times by 12 tests: end of block
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
19196
134 *ptag = tag;-
135 *pclass = xclass;-
136 if (!asn1_get_length(&p, &inf, plength, (int)max))
!asn1_get_leng...gth, (int)max)Description
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-19196
137 goto err;
never executed: goto err;
0
138-
139 if (inf && !(ret & V_ASN1_CONSTRUCTED))
infDescription
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
!(ret & 0x20)Description
TRUEnever evaluated
FALSEnever evaluated
0-19196
140 goto err;
never executed: goto err;
0
141-
142 if (*plength > (omax - (p - *pp))) {
*plength > (omax - (p - *pp))Description
TRUEevaluated 76 times by 1 test
Evaluated by:
  • ecdsatest
FALSEevaluated 19120 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
76-19120
143 ASN1error(ASN1_R_TOO_LONG);-
144 /* Set this so that even if things are not long enough-
145 * the values are set correctly */-
146 ret |= 0x80;-
147 }
executed 76 times by 1 test: end of block
Executed by:
  • ecdsatest
76
148 *pp = p;-
149 return (ret | inf);
executed 19196 times by 12 tests: return (ret | inf);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
19196
150-
151err:-
152 ASN1error(ASN1_R_HEADER_TOO_LONG);-
153 return (0x80);
never executed: return (0x80);
0
154}-
155-
156static int-
157asn1_get_length(const unsigned char **pp, int *inf, long *rl, int max)-
158{-
159 const unsigned char *p= *pp;-
160 unsigned long ret = 0;-
161 unsigned int i;-
162-
163 if (max-- < 1)
max-- < 1Description
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-19196
164 return (0);
never executed: return (0);
0
165 if (*p == 0x80) {
*p == 0x80Description
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-19196
166 *inf = 1;-
167 ret = 0;-
168 p++;-
169 } else {
never executed: end of block
0
170 *inf = 0;-
171 i= *p & 0x7f;-
172 if (*(p++) & 0x80) {
*(p++) & 0x80Description
TRUEevaluated 2372 times by 8 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 16824 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
2372-16824
173 if (max < (int)i)
max < (int)iDescription
TRUEnever evaluated
FALSEevaluated 2372 times by 8 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
0-2372
174 return (0);
never executed: return (0);
0
175 /* skip leading zeroes */-
176 while (i && *p == 0) {
iDescription
TRUEevaluated 2372 times by 8 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEnever evaluated
*p == 0Description
TRUEnever evaluated
FALSEevaluated 2372 times by 8 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
0-2372
177 p++;-
178 i--;-
179 }
never executed: end of block
0
180 if (i > sizeof(long))
i > sizeof(long)Description
TRUEnever evaluated
FALSEevaluated 2372 times by 8 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
0-2372
181 return 0;
never executed: return 0;
0
182 while (i-- > 0) {
i-- > 0Description
TRUEevaluated 4078 times by 8 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 2372 times by 8 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
2372-4078
183 ret <<= 8L;-
184 ret |= *(p++);-
185 }
executed 4078 times by 8 tests: end of block
Executed by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
4078
186 } else
executed 2372 times by 8 tests: end of block
Executed by:
  • asn1test
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
2372
187 ret = i;
executed 16824 times by 12 tests: ret = i;
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
16824
188 }-
189 if (ret > LONG_MAX)
ret > 0x7fffffffffffffffLDescription
TRUEnever evaluated
FALSEevaluated 19196 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-19196
190 return 0;
never executed: return 0;
0
191 *pp = p;-
192 *rl = (long)ret;-
193 return (1);
executed 19196 times by 12 tests: return (1);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
19196
194}-
195-
196/* class 0 is constructed-
197 * constructed == 2 for indefinite length constructed */-
198void-
199ASN1_put_object(unsigned char **pp, int constructed, int length, int tag,-
200 int xclass)-
201{-
202 unsigned char *p= *pp;-
203 int i, ttag;-
204-
205 i = (constructed) ? V_ASN1_CONSTRUCTED : 0;
(constructed)Description
TRUEevaluated 5630 times by 11 tests
Evaluated by:
  • asn1evp
  • asn1test
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEevaluated 6901 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
5630-6901
206 i |= (xclass & V_ASN1_PRIVATE);-
207 if (tag < 31)
tag < 31Description
TRUEevaluated 12531 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEnever evaluated
0-12531
208 *(p++) = i | (tag & V_ASN1_PRIMITIVE_TAG);
executed 12531 times by 12 tests: *(p++) = i | (tag & 0x1f);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
12531
209 else {-
210 *(p++) = i | V_ASN1_PRIMITIVE_TAG;-
211 for(i = 0, ttag = tag; ttag > 0; i++)
ttag > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
212 ttag >>= 7;
never executed: ttag >>= 7;
0
213 ttag = i;-
214 while (i-- > 0) {
i-- > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
215 p[i] = tag & 0x7f;-
216 if (i != (ttag - 1))
i != (ttag - 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
217 p[i] |= 0x80;
never executed: p[i] |= 0x80;
0
218 tag >>= 7;-
219 }
never executed: end of block
0
220 p += ttag;-
221 }
never executed: end of block
0
222 if (constructed == 2)
constructed == 2Description
TRUEnever evaluated
FALSEevaluated 12531 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-12531
223 *(p++) = 0x80;
never executed: *(p++) = 0x80;
0
224 else-
225 asn1_put_length(&p, length);
executed 12531 times by 12 tests: asn1_put_length(&p, length);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
12531
226 *pp = p;-
227}
executed 12531 times by 12 tests: end of block
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
12531
228-
229int-
230ASN1_put_eoc(unsigned char **pp)-
231{-
232 unsigned char *p = *pp;-
233-
234 *p++ = 0;-
235 *p++ = 0;-
236 *pp = p;-
237 return 2;
never executed: return 2;
0
238}-
239-
240static void-
241asn1_put_length(unsigned char **pp, int length)-
242{-
243 unsigned char *p= *pp;-
244-
245 int i, l;-
246 if (length <= 127)
length <= 127Description
TRUEevaluated 11466 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
FALSEevaluated 1065 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
1065-11466
247 *(p++) = (unsigned char)length;
executed 11466 times by 12 tests: *(p++) = (unsigned char)length;
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
11466
248 else {-
249 l = length;-
250 for (i = 0; l > 0; i++)
l > 0Description
TRUEevaluated 1765 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 1065 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
1065-1765
251 l >>= 8;
executed 1765 times by 7 tests: l >>= 8;
Executed by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
1765
252 *(p++) = i | 0x80;-
253 l = i;-
254 while (i-- > 0) {
i-- > 0Description
TRUEevaluated 1765 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 1065 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
1065-1765
255 p[i] = length & 0xff;-
256 length >>= 8;-
257 }
executed 1765 times by 7 tests: end of block
Executed by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
1765
258 p += l;-
259 }
executed 1065 times by 7 tests: end of block
Executed by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
1065
260 *pp = p;-
261}
executed 12531 times by 12 tests: end of block
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
12531
262-
263int-
264ASN1_object_size(int constructed, int length, int tag)-
265{-
266 int ret;-
267-
268 ret = length;-
269 ret++;-
270 if (tag >= 31) {
tag >= 31Description
TRUEnever evaluated
FALSEevaluated 39267 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-39267
271 while (tag > 0) {
tag > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
272 tag >>= 7;-
273 ret++;-
274 }
never executed: end of block
0
275 }
never executed: end of block
0
276 if (constructed == 2)
constructed == 2Description
TRUEnever evaluated
FALSEevaluated 39267 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
0-39267
277 return ret + 3;
never executed: return ret + 3;
0
278 ret++;-
279 if (length > 127) {
length > 127Description
TRUEevaluated 2762 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 36505 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
2762-36505
280 while (length > 0) {
length > 0Description
TRUEevaluated 4592 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 2762 times by 7 tests
Evaluated by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
2762-4592
281 length >>= 8;-
282 ret++;-
283 }
executed 4592 times by 7 tests: end of block
Executed by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
4592
284 }
executed 2762 times by 7 tests: end of block
Executed by:
  • asn1test
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
2762
285 return (ret);
executed 39267 times by 12 tests: return (ret);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • dsatest
  • ecdsatest
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tlstest
  • verifytest
39267
286}-
287-
288static int-
289_asn1_Finish(ASN1_const_CTX *c)-
290{-
291 if ((c->inf == (1|V_ASN1_CONSTRUCTED)) && (!c->eos)) {
(c->inf == (1|0x20))Description
TRUEnever evaluated
FALSEnever evaluated
(!c->eos)Description
TRUEnever evaluated
FALSEnever evaluated
0
292 if (!ASN1_const_check_infinite_end(&c->p, c->slen)) {
!ASN1_const_ch...c->p, c->slen)Description
TRUEnever evaluated
FALSEnever evaluated
0
293 c->error = ERR_R_MISSING_ASN1_EOS;-
294 return (0);
never executed: return (0);
0
295 }-
296 }
never executed: end of block
0
297 if (((c->slen != 0) && !(c->inf & 1)) ||
(c->slen != 0)Description
TRUEnever evaluated
FALSEnever evaluated
!(c->inf & 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
298 ((c->slen < 0) && (c->inf & 1))) {
(c->slen < 0)Description
TRUEnever evaluated
FALSEnever evaluated
(c->inf & 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
299 c->error = ERR_R_ASN1_LENGTH_MISMATCH;-
300 return (0);
never executed: return (0);
0
301 }-
302 return (1);
never executed: return (1);
0
303}-
304-
305int-
306asn1_Finish(ASN1_CTX *c)-
307{-
308 return _asn1_Finish((ASN1_const_CTX *)c);
never executed: return _asn1_Finish((ASN1_const_CTX *)c);
0
309}-
310-
311int-
312asn1_const_Finish(ASN1_const_CTX *c)-
313{-
314 return _asn1_Finish(c);
never executed: return _asn1_Finish(c);
0
315}-
316-
317int-
318asn1_GetSequence(ASN1_const_CTX *c, long *length)-
319{-
320 const unsigned char *q;-
321-
322 q = c->p;-
323 c->inf = ASN1_get_object(&(c->p), &(c->slen), &(c->tag), &(c->xclass),-
324 *length);-
325 if (c->inf & 0x80) {
c->inf & 0x80Description
TRUEnever evaluated
FALSEnever evaluated
0
326 c->error = ERR_R_BAD_GET_ASN1_OBJECT_CALL;-
327 return (0);
never executed: return (0);
0
328 }-
329 if (c->tag != V_ASN1_SEQUENCE) {
c->tag != 16Description
TRUEnever evaluated
FALSEnever evaluated
0
330 c->error = ERR_R_EXPECTING_AN_ASN1_SEQUENCE;-
331 return (0);
never executed: return (0);
0
332 }-
333 (*length) -= (c->p - q);-
334 if (c->max && (*length < 0)) {
c->maxDescription
TRUEnever evaluated
FALSEnever evaluated
(*length < 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
335 c->error = ERR_R_ASN1_LENGTH_MISMATCH;-
336 return (0);
never executed: return (0);
0
337 }-
338 if (c->inf == (1|V_ASN1_CONSTRUCTED))
c->inf == (1|0x20)Description
TRUEnever evaluated
FALSEnever evaluated
0
339 c->slen= *length+ *(c->pp) - c->p;
never executed: c->slen= *length+ *(c->pp) - c->p;
0
340 c->eos = 0;-
341 return (1);
never executed: return (1);
0
342}-
343-
344int-
345ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str)-
346{-
347 if (str == NULL)
str == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1807 times by 4 tests
Evaluated by:
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-1807
348 return 0;
never executed: return 0;
0
349 dst->type = str->type;-
350 if (!ASN1_STRING_set(dst, str->data, str->length))
!ASN1_STRING_s..., str->length)Description
TRUEnever evaluated
FALSEevaluated 1807 times by 4 tests
Evaluated by:
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-1807
351 return 0;
never executed: return 0;
0
352 dst->flags = str->flags;-
353 return 1;
executed 1807 times by 4 tests: return 1;
Executed by:
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
1807
354}-
355-
356ASN1_STRING *-
357ASN1_STRING_dup(const ASN1_STRING *str)-
358{-
359 ASN1_STRING *ret;-
360-
361 if (!str)
!strDescription
TRUEnever evaluated
FALSEevaluated 1807 times by 4 tests
Evaluated by:
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-1807
362 return NULL;
never executed: return ((void *)0) ;
0
363 ret = ASN1_STRING_new();-
364 if (!ret)
!retDescription
TRUEnever evaluated
FALSEevaluated 1807 times by 4 tests
Evaluated by:
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-1807
365 return NULL;
never executed: return ((void *)0) ;
0
366 if (!ASN1_STRING_copy(ret, str)) {
!ASN1_STRING_copy(ret, str)Description
TRUEnever evaluated
FALSEevaluated 1807 times by 4 tests
Evaluated by:
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
0-1807
367 ASN1_STRING_free(ret);-
368 return NULL;
never executed: return ((void *)0) ;
0
369 }-
370 return ret;
executed 1807 times by 4 tests: return ret;
Executed by:
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
1807
371}-
372-
373int-
374ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len)-
375{-
376 const char *data = _data;-
377-
378 if (len < 0) {
len < 0Description
TRUEevaluated 21 times by 1 test
Evaluated by:
  • verifytest
FALSEevaluated 8234 times by 11 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
21-8234
379 if (data == NULL)
data == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 21 times by 1 test
Evaluated by:
  • verifytest
0-21
380 return (0);
never executed: return (0);
0
381 else-
382 len = strlen(data);
executed 21 times by 1 test: len = strlen(data);
Executed by:
  • verifytest
21
383 }-
384 if ((str->length < len) || (str->data == NULL)) {
(str->length < len)Description
TRUEevaluated 8249 times by 10 tests
Evaluated by:
  • asn1evp
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
FALSEevaluated 6 times by 1 test
Evaluated by:
  • asn1time
(str->data == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • asn1time
0-8249
385 unsigned char *tmp;-
386 tmp = realloc(str->data, len + 1);-
387 if (tmp == NULL) {
tmp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 8249 times by 10 tests
Evaluated by:
  • asn1evp
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
0-8249
388 ASN1error(ERR_R_MALLOC_FAILURE);-
389 return (0);
never executed: return (0);
0
390 }-
391 str->data = tmp;-
392 }
executed 8249 times by 10 tests: end of block
Executed by:
  • asn1evp
  • asn1test
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
8249
393 str->length = len;-
394 if (data != NULL) {
data != ((void *)0)Description
TRUEevaluated 8255 times by 11 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
FALSEnever evaluated
0-8255
395 memmove(str->data, data, len);-
396 }
executed 8255 times by 11 tests: end of block
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
8255
397 str->data[str->length]='\0';-
398 return (1);
executed 8255 times by 11 tests: return (1);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
8255
399}-
400-
401void-
402ASN1_STRING_set0(ASN1_STRING *str, void *data, int len)-
403{-
404 freezero(str->data, str->length);-
405 str->data = data;-
406 str->length = len;-
407}
executed 6 times by 2 tests: end of block
Executed by:
  • libcrypto.so.44.0.1
  • pkcs7test
6
408-
409ASN1_STRING *-
410ASN1_STRING_new(void)-
411{-
412 return (ASN1_STRING_type_new(V_ASN1_OCTET_STRING));
executed 1837 times by 7 tests: return (ASN1_STRING_type_new(4));
Executed by:
  • asn1evp
  • libcrypto.so.44.0.1
  • pkcs7test
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
1837
413}-
414-
415ASN1_STRING *-
416ASN1_STRING_type_new(int type)-
417{-
418 ASN1_STRING *ret;-
419-
420 ret = malloc(sizeof(ASN1_STRING));-
421 if (ret == NULL) {
ret == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 8352 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
0-8352
422 ASN1error(ERR_R_MALLOC_FAILURE);-
423 return (NULL);
never executed: return ( ((void *)0) );
0
424 }-
425 ret->length = 0;-
426 ret->type = type;-
427 ret->data = NULL;-
428 ret->flags = 0;-
429 return (ret);
executed 8352 times by 12 tests: return (ret);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
8352
430}-
431-
432void-
433ASN1_STRING_free(ASN1_STRING *a)-
434{-
435 if (a == NULL)
a == ((void *)0)Description
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • asn1evp
  • freenull
FALSEevaluated 8235 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
2-8235
436 return;
executed 2 times by 2 tests: return;
Executed by:
  • asn1evp
  • freenull
2
437 if (a->data != NULL && !(a->flags & ASN1_STRING_FLAG_NDEF))
a->data != ((void *)0)Description
TRUEevaluated 7999 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
FALSEevaluated 236 times by 5 tests
Evaluated by:
  • asn1time
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • verifytest
!(a->flags & 0x010)Description
TRUEevaluated 7999 times by 12 tests
Evaluated by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
FALSEnever evaluated
0-7999
438 freezero(a->data, a->length);
executed 7999 times by 12 tests: freezero(a->data, a->length);
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
7999
439 free(a);-
440}
executed 8235 times by 12 tests: end of block
Executed by:
  • asn1evp
  • asn1test
  • asn1time
  • keypairtest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rfc5280time
  • servertest
  • ssltest
  • tls_prf
  • tlstest
  • verifytest
8235
441-
442int-
443ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)-
444{-
445 int i;-
446-
447 i = (a->length - b->length);-
448 if (i == 0) {
i == 0Description
TRUEevaluated 131 times by 4 tests
Evaluated by:
  • asn1test
  • pkcs7test
  • ssltest
  • tlstest
FALSEnever evaluated
0-131
449 i = memcmp(a->data, b->data, a->length);-
450 if (i == 0)
i == 0Description
TRUEevaluated 131 times by 4 tests
Evaluated by:
  • asn1test
  • pkcs7test
  • ssltest
  • tlstest
FALSEnever evaluated
0-131
451 return (a->type - b->type);
executed 131 times by 4 tests: return (a->type - b->type);
Executed by:
  • asn1test
  • pkcs7test
  • ssltest
  • tlstest
131
452 else-
453 return (i);
never executed: return (i);
0
454 } else-
455 return (i);
never executed: return (i);
0
456}-
457-
458void-
459asn1_add_error(const unsigned char *address, int offset)-
460{-
461 ERR_asprintf_error_data("offset=%d", offset);-
462}
never executed: end of block
0
463-
464int-
465ASN1_STRING_length(const ASN1_STRING *x)-
466{-
467 return (x->length);
executed 23 times by 3 tests: return (x->length);
Executed by:
  • asn1evp
  • pkcs7test
  • verifytest
23
468}-
469-
470void-
471ASN1_STRING_length_set(ASN1_STRING *x, int len)-
472{-
473 x->length = len;-
474}
never executed: end of block
0
475-
476int-
477ASN1_STRING_type(const ASN1_STRING *x)-
478{-
479 return (x->type);
executed 16 times by 1 test: return (x->type);
Executed by:
  • verifytest
16
480}-
481-
482unsigned char *-
483ASN1_STRING_data(ASN1_STRING *x)-
484{-
485 return (x->data);
executed 21 times by 3 tests: return (x->data);
Executed by:
  • asn1evp
  • pkcs7test
  • verifytest
21
486}-
487-
488const unsigned char *-
489ASN1_STRING_get0_data(const ASN1_STRING *x)-
490{-
491 return (x->data);
never executed: return (x->data);
0
492}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2