Line | Source | Count |
1 | | - |
2 | | - |
3 | int | - |
4 | i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type) | - |
5 | { | - |
6 | int i, n = 0; | - |
7 | static const char h[] = "0123456789ABCDEF"; | - |
8 | char buf[2]; | - |
9 | | - |
10 | if (a == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
11 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
12 | ) | - |
13 | return never executed: return (0); (0);never executed: return (0); | 0 |
14 | | - |
15 | if (a->length == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
16 | if (BIO_write(bp, "0", 1) != 1TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
17 | goto never executed: goto err; err;never executed: goto err; | 0 |
18 | n = 1; | - |
19 | } never executed: end of block else { | 0 |
20 | for (i = 0; i < a->lengthTRUE | never evaluated | FALSE | never evaluated |
; i++) { | 0 |
21 | if ((TRUE | never evaluated | FALSE | never evaluated |
i != 0)TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
i % 35 == 0)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
22 | if (BIO_write(bp, "\\\n", 2) != 2TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
23 | goto never executed: goto err; err;never executed: goto err; | 0 |
24 | n += 2; | - |
25 | } never executed: end of block | 0 |
26 | buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f]; | - |
27 | buf[1] = h[((unsigned char)a->data[i]) & 0x0f]; | - |
28 | if (BIO_write(bp, buf, 2) != 2TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
29 | goto never executed: goto err; err;never executed: goto err; | 0 |
30 | n += 2; | - |
31 | } never executed: end of block | 0 |
32 | } never executed: end of block | 0 |
33 | return never executed: return (n); (n);never executed: return (n); | 0 |
34 | | - |
35 | err: | - |
36 | return never executed: return (-1); (-1);never executed: return (-1); | 0 |
37 | } | - |
38 | | - |
39 | int | - |
40 | a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size) | - |
41 | { | - |
42 | int ret = 0; | - |
43 | int i, j, k, m, n, again, bufsize; | - |
44 | unsigned char *s = | - |
45 | ((void *)0) | - |
46 | , *sp; | - |
47 | unsigned char *bufp; | - |
48 | int first = 1; | - |
49 | size_t num = 0, slen = 0; | - |
50 | | - |
51 | bufsize = BIO_gets(bp, buf, size); | - |
52 | for (;;) { | - |
53 | if (bufsize < 1TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
54 | if (firstTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
55 | break; never executed: break; | 0 |
56 | else | - |
57 | goto never executed: goto err_sl; err_sl;never executed: goto err_sl; | 0 |
58 | } | - |
59 | first = 0; | - |
60 | | - |
61 | i = bufsize; | - |
62 | if (buf[i-1] == '\n'TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
63 | buf[--i] = '\0'; never executed: buf[--i] = '\0'; | 0 |
64 | if (i == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
65 | goto never executed: goto err_sl; err_sl;never executed: goto err_sl; | 0 |
66 | if (buf[i-1] == '\r'TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
67 | buf[--i] = '\0'; never executed: buf[--i] = '\0'; | 0 |
68 | if (i == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
69 | goto never executed: goto err_sl; err_sl;never executed: goto err_sl; | 0 |
70 | again = (buf[i - 1] == '\\'); | - |
71 | | - |
72 | for (j = i - 1; j > 0TRUE | never evaluated | FALSE | never evaluated |
; j--) { | 0 |
73 | if (!(((TRUE | never evaluated | FALSE | never evaluated |
buf[j] >= '0')TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
buf[j] <= '9')TRUE | never evaluated | FALSE | never evaluated |
) || | 0 |
74 | ((TRUE | never evaluated | FALSE | never evaluated |
buf[j] >= 'a')TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
buf[j] <= 'f')TRUE | never evaluated | FALSE | never evaluated |
) || | 0 |
75 | ((TRUE | never evaluated | FALSE | never evaluated |
buf[j] >= 'A')TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
buf[j] <= 'F')TRUE | never evaluated | FALSE | never evaluated |
))) { | 0 |
76 | i = j; | - |
77 | break; never executed: break; | 0 |
78 | } | - |
79 | } never executed: end of block | 0 |
80 | buf[i] = '\0'; | - |
81 | | - |
82 | | - |
83 | if (i < 2TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
84 | goto never executed: goto err_sl; err_sl;never executed: goto err_sl; | 0 |
85 | | - |
86 | bufp = (unsigned char *)buf; | - |
87 | | - |
88 | k = 0; | - |
89 | i -= again; | - |
90 | if (i % 2 != 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
91 | ERR_put_error(13,(0xfff),(145),__FILE__,149); | - |
92 | goto never executed: goto err; err;never executed: goto err; | 0 |
93 | } | - |
94 | i /= 2; | - |
95 | if (num + i > slenTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
96 | sp = realloc(s, num + i); | - |
97 | if (sp == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
98 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
99 | ) { | - |
100 | ERR_put_error(13,(0xfff),((1|64)),__FILE__,156); | - |
101 | goto never executed: goto err; err;never executed: goto err; | 0 |
102 | } | - |
103 | s = sp; | - |
104 | slen = num + i; | - |
105 | } never executed: end of block | 0 |
106 | for (j = 0; j < iTRUE | never evaluated | FALSE | never evaluated |
; j++, k += 2) { | 0 |
107 | for (n = 0; n < 2TRUE | never evaluated | FALSE | never evaluated |
; n++) { | 0 |
108 | m = bufp[k + n]; | - |
109 | if ((TRUE | never evaluated | FALSE | never evaluated |
m >= '0')TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
m <= '9')TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
110 | m -= '0'; never executed: m -= '0'; | 0 |
111 | else if ((TRUE | never evaluated | FALSE | never evaluated |
m >= 'a')TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
m <= 'f')TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
112 | m = m - 'a' + 10; never executed: m = m - 'a' + 10; | 0 |
113 | else if ((TRUE | never evaluated | FALSE | never evaluated |
m >= 'A')TRUE | never evaluated | FALSE | never evaluated |
&& (TRUE | never evaluated | FALSE | never evaluated |
m <= 'F')TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
114 | m = m - 'A' + 10; never executed: m = m - 'A' + 10; | 0 |
115 | else { | - |
116 | ERR_put_error(13,(0xfff),(141),__FILE__,172); | - |
117 | goto never executed: goto err; err;never executed: goto err; | 0 |
118 | } | - |
119 | s[num + j] <<= 4; | - |
120 | s[num + j] |= m; | - |
121 | } never executed: end of block | 0 |
122 | } never executed: end of block | 0 |
123 | num += i; | - |
124 | if (againTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
125 | bufsize = BIO_gets(bp, buf, size); never executed: bufsize = BIO_gets(bp, buf, size); | 0 |
126 | else | - |
127 | break; never executed: break; | 0 |
128 | } | - |
129 | bs->length = num; | - |
130 | bs->data = s; | - |
131 | return never executed: return (1); (1);never executed: return (1); | 0 |
132 | | - |
133 | err_sl: | - |
134 | ERR_put_error(13,(0xfff),(150),__FILE__,190); | - |
135 | err: code before this statement never executed: err: | 0 |
136 | free(s); | - |
137 | return never executed: return (ret); (ret);never executed: return (ret); | 0 |
138 | } | - |
| | |