Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/asn1/a_print.c |
Source code | Switch to Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | /* | - | ||||||||||||||||||
2 | * Copyright 1995-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/ctype.h" | - | ||||||||||||||||||
12 | #include "internal/cryptlib.h" | - | ||||||||||||||||||
13 | #include <openssl/asn1.h> | - | ||||||||||||||||||
14 | - | |||||||||||||||||||
15 | int ASN1_PRINTABLE_type(const unsigned char *s, int len) | - | ||||||||||||||||||
16 | { | - | ||||||||||||||||||
17 | int c; | - | ||||||||||||||||||
18 | int ia5 = 0; | - | ||||||||||||||||||
19 | int t61 = 0; | - | ||||||||||||||||||
20 | - | |||||||||||||||||||
21 | if (len <= 0)
| 0-2 | ||||||||||||||||||
22 | len = -1; never executed: len = -1; | 0 | ||||||||||||||||||
23 | if (s == NULL)
| 0-2 | ||||||||||||||||||
24 | return V_ASN1_PRINTABLESTRING; never executed: return 19; | 0 | ||||||||||||||||||
25 | - | |||||||||||||||||||
26 | while ((*s) && (len-- != 0)) {
| 0-4 | ||||||||||||||||||
27 | c = *(s++); | - | ||||||||||||||||||
28 | if (!ossl_isasn1print(c))
| 0-4 | ||||||||||||||||||
29 | ia5 = 1; never executed: ia5 = 1; | 0 | ||||||||||||||||||
30 | if (!ossl_isascii(c))
| 0-4 | ||||||||||||||||||
31 | t61 = 1; never executed: t61 = 1; | 0 | ||||||||||||||||||
32 | } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||||||||||||||
33 | if (t61)
| 0-2 | ||||||||||||||||||
34 | return V_ASN1_T61STRING; never executed: return 20; | 0 | ||||||||||||||||||
35 | if (ia5)
| 0-2 | ||||||||||||||||||
36 | return V_ASN1_IA5STRING; never executed: return 22; | 0 | ||||||||||||||||||
37 | return V_ASN1_PRINTABLESTRING; executed 2 times by 1 test: return 19; Executed by:
| 2 | ||||||||||||||||||
38 | } | - | ||||||||||||||||||
39 | - | |||||||||||||||||||
40 | int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s) | - | ||||||||||||||||||
41 | { | - | ||||||||||||||||||
42 | int i; | - | ||||||||||||||||||
43 | unsigned char *p; | - | ||||||||||||||||||
44 | - | |||||||||||||||||||
45 | if (s->type != V_ASN1_UNIVERSALSTRING)
| 0 | ||||||||||||||||||
46 | return 0; never executed: return 0; | 0 | ||||||||||||||||||
47 | if ((s->length % 4) != 0)
| 0 | ||||||||||||||||||
48 | return 0; never executed: return 0; | 0 | ||||||||||||||||||
49 | p = s->data; | - | ||||||||||||||||||
50 | for (i = 0; i < s->length; i += 4) {
| 0 | ||||||||||||||||||
51 | if ((p[0] != '\0') || (p[1] != '\0') || (p[2] != '\0'))
| 0 | ||||||||||||||||||
52 | break; never executed: break; | 0 | ||||||||||||||||||
53 | else | - | ||||||||||||||||||
54 | p += 4; never executed: p += 4; | 0 | ||||||||||||||||||
55 | } | - | ||||||||||||||||||
56 | if (i < s->length)
| 0 | ||||||||||||||||||
57 | return 0; never executed: return 0; | 0 | ||||||||||||||||||
58 | p = s->data; | - | ||||||||||||||||||
59 | for (i = 3; i < s->length; i += 4) {
| 0 | ||||||||||||||||||
60 | *(p++) = s->data[i]; | - | ||||||||||||||||||
61 | } never executed: end of block | 0 | ||||||||||||||||||
62 | *(p) = '\0'; | - | ||||||||||||||||||
63 | s->length /= 4; | - | ||||||||||||||||||
64 | s->type = ASN1_PRINTABLE_type(s->data, s->length); | - | ||||||||||||||||||
65 | return 1; never executed: return 1; | 0 | ||||||||||||||||||
66 | } | - | ||||||||||||||||||
67 | - | |||||||||||||||||||
68 | int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v) | - | ||||||||||||||||||
69 | { | - | ||||||||||||||||||
70 | int i, n; | - | ||||||||||||||||||
71 | char buf[80]; | - | ||||||||||||||||||
72 | const char *p; | - | ||||||||||||||||||
73 | - | |||||||||||||||||||
74 | if (v == NULL)
| 0-60274 | ||||||||||||||||||
75 | return 0; never executed: return 0; | 0 | ||||||||||||||||||
76 | n = 0; | - | ||||||||||||||||||
77 | p = (const char *)v->data; | - | ||||||||||||||||||
78 | for (i = 0; i < v->length; i++) {
| 60274-1095817 | ||||||||||||||||||
79 | if ((p[i] > '~') || ((p[i] < ' ') &&
| 2635-1093182 | ||||||||||||||||||
80 | (p[i] != '\n') && (p[i] != '\r')))
| 7313-770147 | ||||||||||||||||||
81 | buf[n] = '.'; executed 764767 times by 1 test: buf[n] = '.'; Executed by:
| 764767 | ||||||||||||||||||
82 | else | - | ||||||||||||||||||
83 | buf[n] = p[i]; executed 331050 times by 1 test: buf[n] = p[i]; Executed by:
| 331050 | ||||||||||||||||||
84 | n++; | - | ||||||||||||||||||
85 | if (n >= 80) {
| 3476-1092341 | ||||||||||||||||||
86 | if (BIO_write(bp, buf, n) <= 0)
| 0-3476 | ||||||||||||||||||
87 | return 0; never executed: return 0; | 0 | ||||||||||||||||||
88 | n = 0; | - | ||||||||||||||||||
89 | } executed 3476 times by 1 test: end of block Executed by:
| 3476 | ||||||||||||||||||
90 | } executed 1095817 times by 1 test: end of block Executed by:
| 1095817 | ||||||||||||||||||
91 | if (n > 0)
| 8139-52135 | ||||||||||||||||||
92 | if (BIO_write(bp, buf, n) <= 0)
| 0-52135 | ||||||||||||||||||
93 | return 0; never executed: return 0; | 0 | ||||||||||||||||||
94 | return 1; executed 60274 times by 1 test: return 1; Executed by:
| 60274 | ||||||||||||||||||
95 | } | - | ||||||||||||||||||
Source code | Switch to Preprocessed file |