1 /* $OpenBSD: bio_dump.c,v 1.4 2024/02/09 12:48:32 tb Exp $ */
2 /*
3 * Copyright (c) 2024 Theo Buehler <tb@openbsd.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18 #include <err.h>
19 #include <string.h>
20
21 #include <openssl/bio.h>
22
23 const uint8_t dump[] = {
24 0x74, 0x45, 0xc6, 0x20, 0x00, 0x00, 0x00, 0x00,
25 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26 0x36, 0xd8, 0x61, 0x48, 0x68, 0x3c, 0xc0, 0x68,
27 0xaa, 0x15, 0x57, 0x77, 0xe3, 0xec, 0xb4, 0x98,
28 0xc6, 0x08, 0xfc, 0x59, 0xb3, 0x4f, 0x45, 0xcf,
29 0x4b, 0xc2, 0xae, 0x98, 0xb5, 0xeb, 0xe0, 0xb5,
30 0xc1, 0x68, 0xba, 0xcf, 0x7c, 0xf7, 0x7b, 0x38,
31 0x43, 0x2f, 0xb9, 0x0e, 0x23, 0x02, 0xb9, 0x4f,
32 0x8c, 0x26, 0xeb, 0xef, 0x70, 0x98, 0x82, 0xa7,
33 0xb9, 0x78, 0xc5, 0x08, 0x96, 0x99, 0xb3, 0x84,
34 0xa3, 0x4f, 0xfb, 0xd7, 0x38, 0xa9, 0xd9, 0xd4,
35 0x53, 0x0f, 0x4f, 0x64, 0x97, 0xdf, 0xcf, 0xf3,
36 0x4f, 0xc8, 0xd2, 0x56, 0x3f, 0x0d, 0x72, 0xd4,
37 0x55, 0x98, 0x89, 0xb0, 0x45, 0x26, 0x3f, 0x7a,
38 0xbd, 0x9d, 0x96, 0x15, 0xa2, 0x10, 0x14, 0x85,
39 0xaa, 0xa1, 0x7c, 0x84, 0xfb, 0xc4, 0xa5, 0x7b,
40 0xc6, 0xe3, 0xad, 0x85, 0x57, 0x96, 0xbb, 0x81,
41 0x18, 0x0c, 0xed, 0x2f, 0xf7, 0x6a, 0x4c, 0x4d,
42 0x59, 0xe1, 0xcc, 0xc5, 0x3a, 0x9f, 0x48, 0xfc,
43 0x1d, 0x7c, 0x0d, 0xa4, 0x79, 0x96, 0xe7, 0x2b,
44 0x39, 0x15, 0xf9, 0x3a, 0x6a, 0x5e, 0x7c, 0x4e,
45 0xc9, 0x3b, 0xaf, 0xeb, 0x3b, 0xcf, 0x8d, 0x6a,
46 0x57, 0xe6, 0xc5, 0xba, 0xbd, 0xa6, 0xa0, 0x6b,
47 0x03, 0xd5, 0xa3, 0x9f, 0x99, 0x2a, 0xea, 0x88,
48 0x72, 0x1b, 0x66, 0x6c, 0x5e, 0x1d, 0x49, 0xd5,
49 0x1e, 0x1e, 0xcc, 0x1a, 0xb1, 0xd8, 0xf7, 0x91,
50 0x1e, 0x1e, 0xcc, 0x1a, 0x20, 0x00, 0x20, 0x00,
51 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00,
52 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00,
53 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00,
54 0x20, 0x00, 0x20, 0x00, 0x20, 0x00,
55 };
56 #define DUMP_LEN (sizeof(dump) / sizeof(dump[0]))
57
58 const uint8_t bytes[] = {
59 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
60 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
61 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
62 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
63 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
64 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
65 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
66 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
67 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
68 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
69 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
70 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
71 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
72 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
73 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
74 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
75 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
76 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
77 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
78 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
79 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
80 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
81 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
82 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
83 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
84 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
85 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
86 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
87 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
88 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
89 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
90 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
91 };
92 #define BYTES_LEN (sizeof(bytes) / sizeof(bytes[0]))
93
94 static const struct bio_dump_testcase {
95 int indent;
96 const char *input;
97 int inlen;
98 const char *output;
99 } bio_dump_testcases[] = {
100 {
101 .indent = 0,
102 .input = "",
103 .inlen = 0,
104 .output = "",
105 },
106 {
107 .indent = 0,
108 .input = "",
109 .inlen = 1,
110 .output = "0001 - <SPACES/NULS>\n",
111 },
112 {
113 .indent = 6,
114 .input = " ",
115 .inlen = 1,
116 .output = " 0001 - <SPACES/NULS>\n",
117 },
118 {
119 .indent = -1,
120 .input = "!",
121 .inlen = 1,
122 .output =
123 "0000 - 21 !\n",
124 },
125 {
126 .indent = -1,
127 .input = "~",
128 .inlen = 1,
129 .output =
130 "0000 - 7e ~\n",
131 },
132 {
133 .indent = 4,
134 .input = dump,
135 .inlen = DUMP_LEN,
136 .output =
137 " 0000 - 74 45 c6 20 00 00 00 00-00 00 00 00 00 00 00 00 tE. ............\n"
138 " 0010 - 36 d8 61 48 68 3c c0 68-aa 15 57 77 e3 ec b4 98 6.aHh<.h..Ww....\n"
139 " 0020 - c6 08 fc 59 b3 4f 45 cf-4b c2 ae 98 b5 eb e0 b5 ...Y.OE.K.......\n"
140 " 0030 - c1 68 ba cf 7c f7 7b 38-43 2f b9 0e 23 02 b9 4f .h..|.{8C/..#..O\n"
141 " 0040 - 8c 26 eb ef 70 98 82 a7-b9 78 c5 08 96 99 b3 84 .&..p....x......\n"
142 " 0050 - a3 4f fb d7 38 a9 d9 d4-53 0f 4f 64 97 df cf f3 .O..8...S.Od....\n"
143 " 0060 - 4f c8 d2 56 3f 0d 72 d4-55 98 89 b0 45 26 3f 7a O..V?.r.U...E&?z\n"
144 " 0070 - bd 9d 96 15 a2 10 14 85-aa a1 7c 84 fb c4 a5 7b ..........|....{\n"
145 " 0080 - c6 e3 ad 85 57 96 bb 81-18 0c ed 2f f7 6a 4c 4d ....W....../.jLM\n"
146 " 0090 - 59 e1 cc c5 3a 9f 48 fc-1d 7c 0d a4 79 96 e7 2b Y...:.H..|..y..+\n"
147 " 00a0 - 39 15 f9 3a 6a 5e 7c 4e-c9 3b af eb 3b cf 8d 6a 9..:j^|N.;..;..j\n"
148 " 00b0 - 57 e6 c5 ba bd a6 a0 6b-03 d5 a3 9f 99 2a ea 88 W......k.....*..\n"
149 " 00c0 - 72 1b 66 6c 5e 1d 49 d5-1e 1e cc 1a b1 d8 f7 91 r.fl^.I.........\n"
150 " 00d0 - 1e 1e cc 1a ....\n"
151 " 00f6 - <SPACES/NULS>\n",
152 },
153 {
154 .indent = 11,
155 .input = dump,
156 .inlen = DUMP_LEN,
157 .output =
158 " 0000 - 74 45 c6 20 00 00 00 00-00 00 00 00 00 00 tE. ..........\n"
159 " 000e - 00 00 36 d8 61 48 68 3c-c0 68 aa 15 57 77 ..6.aHh<.h..Ww\n"
160 " 001c - e3 ec b4 98 c6 08 fc 59-b3 4f 45 cf 4b c2 .......Y.OE.K.\n"
161 " 002a - ae 98 b5 eb e0 b5 c1 68-ba cf 7c f7 7b 38 .......h..|.{8\n"
162 " 0038 - 43 2f b9 0e 23 02 b9 4f-8c 26 eb ef 70 98 C/..#..O.&..p.\n"
163 " 0046 - 82 a7 b9 78 c5 08 96 99-b3 84 a3 4f fb d7 ...x.......O..\n"
164 " 0054 - 38 a9 d9 d4 53 0f 4f 64-97 df cf f3 4f c8 8...S.Od....O.\n"
165 " 0062 - d2 56 3f 0d 72 d4 55 98-89 b0 45 26 3f 7a .V?.r.U...E&?z\n"
166 " 0070 - bd 9d 96 15 a2 10 14 85-aa a1 7c 84 fb c4 ..........|...\n"
167 " 007e - a5 7b c6 e3 ad 85 57 96-bb 81 18 0c ed 2f .{....W....../\n"
168 " 008c - f7 6a 4c 4d 59 e1 cc c5-3a 9f 48 fc 1d 7c .jLMY...:.H..|\n"
169 " 009a - 0d a4 79 96 e7 2b 39 15-f9 3a 6a 5e 7c 4e ..y..+9..:j^|N\n"
170 " 00a8 - c9 3b af eb 3b cf 8d 6a-57 e6 c5 ba bd a6 .;..;..jW.....\n"
171 " 00b6 - a0 6b 03 d5 a3 9f 99 2a-ea 88 72 1b 66 6c .k.....*..r.fl\n"
172 " 00c4 - 5e 1d 49 d5 1e 1e cc 1a-b1 d8 f7 91 1e 1e ^.I...........\n"
173 " 00d2 - cc 1a ..\n"
174 " 00f6 - <SPACES/NULS>\n",
175 },
176 {
177 .indent = 18,
178 .input = dump,
179 .inlen = DUMP_LEN,
180 .output =
181 " 0000 - 74 45 c6 20 00 00 00 00-00 00 00 00 00 tE. .........\n"
182 " 000d - 00 00 00 36 d8 61 48 68-3c c0 68 aa 15 ...6.aHh<.h..\n"
183 " 001a - 57 77 e3 ec b4 98 c6 08-fc 59 b3 4f 45 Ww.......Y.OE\n"
184 " 0027 - cf 4b c2 ae 98 b5 eb e0-b5 c1 68 ba cf .K........h..\n"
185 " 0034 - 7c f7 7b 38 43 2f b9 0e-23 02 b9 4f 8c |.{8C/..#..O.\n"
186 " 0041 - 26 eb ef 70 98 82 a7 b9-78 c5 08 96 99 &..p....x....\n"
187 " 004e - b3 84 a3 4f fb d7 38 a9-d9 d4 53 0f 4f ...O..8...S.O\n"
188 " 005b - 64 97 df cf f3 4f c8 d2-56 3f 0d 72 d4 d....O..V?.r.\n"
189 " 0068 - 55 98 89 b0 45 26 3f 7a-bd 9d 96 15 a2 U...E&?z.....\n"
190 " 0075 - 10 14 85 aa a1 7c 84 fb-c4 a5 7b c6 e3 .....|....{..\n"
191 " 0082 - ad 85 57 96 bb 81 18 0c-ed 2f f7 6a 4c ..W....../.jL\n"
192 " 008f - 4d 59 e1 cc c5 3a 9f 48-fc 1d 7c 0d a4 MY...:.H..|..\n"
193 " 009c - 79 96 e7 2b 39 15 f9 3a-6a 5e 7c 4e c9 y..+9..:j^|N.\n"
194 " 00a9 - 3b af eb 3b cf 8d 6a 57-e6 c5 ba bd a6 ;..;..jW.....\n"
195 " 00b6 - a0 6b 03 d5 a3 9f 99 2a-ea 88 72 1b 66 .k.....*..r.f\n"
196 " 00c3 - 6c 5e 1d 49 d5 1e 1e cc-1a b1 d8 f7 91 l^.I.........\n"
197 " 00d0 - 1e 1e cc 1a ....\n"
198 " 00f6 - <SPACES/NULS>\n",
199 },
200 {
201 .indent = 25,
202 .input = dump,
203 .inlen = DUMP_LEN,
204 .output =
205 " 0000 - 74 45 c6 20 00 00 00 00-00 00 00 tE. .......\n"
206 " 000b - 00 00 00 00 00 36 d8 61-48 68 3c .....6.aHh<\n"
207 " 0016 - c0 68 aa 15 57 77 e3 ec-b4 98 c6 .h..Ww.....\n"
208 " 0021 - 08 fc 59 b3 4f 45 cf 4b-c2 ae 98 ..Y.OE.K...\n"
209 " 002c - b5 eb e0 b5 c1 68 ba cf-7c f7 7b .....h..|.{\n"
210 " 0037 - 38 43 2f b9 0e 23 02 b9-4f 8c 26 8C/..#..O.&\n"
211 " 0042 - eb ef 70 98 82 a7 b9 78-c5 08 96 ..p....x...\n"
212 " 004d - 99 b3 84 a3 4f fb d7 38-a9 d9 d4 ....O..8...\n"
213 " 0058 - 53 0f 4f 64 97 df cf f3-4f c8 d2 S.Od....O..\n"
214 " 0063 - 56 3f 0d 72 d4 55 98 89-b0 45 26 V?.r.U...E&\n"
215 " 006e - 3f 7a bd 9d 96 15 a2 10-14 85 aa ?z.........\n"
216 " 0079 - a1 7c 84 fb c4 a5 7b c6-e3 ad 85 .|....{....\n"
217 " 0084 - 57 96 bb 81 18 0c ed 2f-f7 6a 4c W....../.jL\n"
218 " 008f - 4d 59 e1 cc c5 3a 9f 48-fc 1d 7c MY...:.H..|\n"
219 " 009a - 0d a4 79 96 e7 2b 39 15-f9 3a 6a ..y..+9..:j\n"
220 " 00a5 - 5e 7c 4e c9 3b af eb 3b-cf 8d 6a ^|N.;..;..j\n"
221 " 00b0 - 57 e6 c5 ba bd a6 a0 6b-03 d5 a3 W......k...\n"
222 " 00bb - 9f 99 2a ea 88 72 1b 66-6c 5e 1d ..*..r.fl^.\n"
223 " 00c6 - 49 d5 1e 1e cc 1a b1 d8-f7 91 1e I..........\n"
224 " 00d1 - 1e cc 1a ...\n"
225 " 00f6 - <SPACES/NULS>\n",
226 },
227 {
228 .indent = 32,
229 .input = dump,
230 .inlen = DUMP_LEN,
231 .output =
232 " 0000 - 74 45 c6 20 00 00 00 00-00 tE. .....\n"
233 " 0009 - 00 00 00 00 00 00 00 36-d8 .......6.\n"
234 " 0012 - 61 48 68 3c c0 68 aa 15-57 aHh<.h..W\n"
235 " 001b - 77 e3 ec b4 98 c6 08 fc-59 w.......Y\n"
236 " 0024 - b3 4f 45 cf 4b c2 ae 98-b5 .OE.K....\n"
237 " 002d - eb e0 b5 c1 68 ba cf 7c-f7 ....h..|.\n"
238 " 0036 - 7b 38 43 2f b9 0e 23 02-b9 {8C/..#..\n"
239 " 003f - 4f 8c 26 eb ef 70 98 82-a7 O.&..p...\n"
240 " 0048 - b9 78 c5 08 96 99 b3 84-a3 .x.......\n"
241 " 0051 - 4f fb d7 38 a9 d9 d4 53-0f O..8...S.\n"
242 " 005a - 4f 64 97 df cf f3 4f c8-d2 Od....O..\n"
243 " 0063 - 56 3f 0d 72 d4 55 98 89-b0 V?.r.U...\n"
244 " 006c - 45 26 3f 7a bd 9d 96 15-a2 E&?z.....\n"
245 " 0075 - 10 14 85 aa a1 7c 84 fb-c4 .....|...\n"
246 " 007e - a5 7b c6 e3 ad 85 57 96-bb .{....W..\n"
247 " 0087 - 81 18 0c ed 2f f7 6a 4c-4d ..../.jLM\n"
248 " 0090 - 59 e1 cc c5 3a 9f 48 fc-1d Y...:.H..\n"
249 " 0099 - 7c 0d a4 79 96 e7 2b 39-15 |..y..+9.\n"
250 " 00a2 - f9 3a 6a 5e 7c 4e c9 3b-af .:j^|N.;.\n"
251 " 00ab - eb 3b cf 8d 6a 57 e6 c5-ba .;..jW...\n"
252 " 00b4 - bd a6 a0 6b 03 d5 a3 9f-99 ...k.....\n"
253 " 00bd - 2a ea 88 72 1b 66 6c 5e-1d *..r.fl^.\n"
254 " 00c6 - 49 d5 1e 1e cc 1a b1 d8-f7 I........\n"
255 " 00cf - 91 1e 1e cc 1a .....\n"
256 " 00f6 - <SPACES/NULS>\n",
257 },
258 {
259 .indent = 35,
260 .input = dump,
261 .inlen = DUMP_LEN,
262 .output =
263 " 0000 - 74 45 c6 20 00 00 00 00- tE. ....\n"
264 " 0008 - 00 00 00 00 00 00 00 00- ........\n"
265 " 0010 - 36 d8 61 48 68 3c c0 68- 6.aHh<.h\n"
266 " 0018 - aa 15 57 77 e3 ec b4 98- ..Ww....\n"
267 " 0020 - c6 08 fc 59 b3 4f 45 cf- ...Y.OE.\n"
268 " 0028 - 4b c2 ae 98 b5 eb e0 b5- K.......\n"
269 " 0030 - c1 68 ba cf 7c f7 7b 38- .h..|.{8\n"
270 " 0038 - 43 2f b9 0e 23 02 b9 4f- C/..#..O\n"
271 " 0040 - 8c 26 eb ef 70 98 82 a7- .&..p...\n"
272 " 0048 - b9 78 c5 08 96 99 b3 84- .x......\n"
273 " 0050 - a3 4f fb d7 38 a9 d9 d4- .O..8...\n"
274 " 0058 - 53 0f 4f 64 97 df cf f3- S.Od....\n"
275 " 0060 - 4f c8 d2 56 3f 0d 72 d4- O..V?.r.\n"
276 " 0068 - 55 98 89 b0 45 26 3f 7a- U...E&?z\n"
277 " 0070 - bd 9d 96 15 a2 10 14 85- ........\n"
278 " 0078 - aa a1 7c 84 fb c4 a5 7b- ..|....{\n"
279 " 0080 - c6 e3 ad 85 57 96 bb 81- ....W...\n"
280 " 0088 - 18 0c ed 2f f7 6a 4c 4d- .../.jLM\n"
281 " 0090 - 59 e1 cc c5 3a 9f 48 fc- Y...:.H.\n"
282 " 0098 - 1d 7c 0d a4 79 96 e7 2b- .|..y..+\n"
283 " 00a0 - 39 15 f9 3a 6a 5e 7c 4e- 9..:j^|N\n"
284 " 00a8 - c9 3b af eb 3b cf 8d 6a- .;..;..j\n"
285 " 00b0 - 57 e6 c5 ba bd a6 a0 6b- W......k\n"
286 " 00b8 - 03 d5 a3 9f 99 2a ea 88- .....*..\n"
287 " 00c0 - 72 1b 66 6c 5e 1d 49 d5- r.fl^.I.\n"
288 " 00c8 - 1e 1e cc 1a b1 d8 f7 91- ........\n"
289 " 00d0 - 1e 1e cc 1a ....\n"
290 " 00f6 - <SPACES/NULS>\n",
291 },
292 {
293 .indent = 39,
294 .input = dump,
295 .inlen = DUMP_LEN,
296 .output =
297 " 0000 - 74 45 c6 20 00 00 00 tE. ...\n"
298 " 0007 - 00 00 00 00 00 00 00 .......\n"
299 " 000e - 00 00 36 d8 61 48 68 ..6.aHh\n"
300 " 0015 - 3c c0 68 aa 15 57 77 <.h..Ww\n"
301 " 001c - e3 ec b4 98 c6 08 fc .......\n"
302 " 0023 - 59 b3 4f 45 cf 4b c2 Y.OE.K.\n"
303 " 002a - ae 98 b5 eb e0 b5 c1 .......\n"
304 " 0031 - 68 ba cf 7c f7 7b 38 h..|.{8\n"
305 " 0038 - 43 2f b9 0e 23 02 b9 C/..#..\n"
306 " 003f - 4f 8c 26 eb ef 70 98 O.&..p.\n"
307 " 0046 - 82 a7 b9 78 c5 08 96 ...x...\n"
308 " 004d - 99 b3 84 a3 4f fb d7 ....O..\n"
309 " 0054 - 38 a9 d9 d4 53 0f 4f 8...S.O\n"
310 " 005b - 64 97 df cf f3 4f c8 d....O.\n"
311 " 0062 - d2 56 3f 0d 72 d4 55 .V?.r.U\n"
312 " 0069 - 98 89 b0 45 26 3f 7a ...E&?z\n"
313 " 0070 - bd 9d 96 15 a2 10 14 .......\n"
314 " 0077 - 85 aa a1 7c 84 fb c4 ...|...\n"
315 " 007e - a5 7b c6 e3 ad 85 57 .{....W\n"
316 " 0085 - 96 bb 81 18 0c ed 2f ....../\n"
317 " 008c - f7 6a 4c 4d 59 e1 cc .jLMY..\n"
318 " 0093 - c5 3a 9f 48 fc 1d 7c .:.H..|\n"
319 " 009a - 0d a4 79 96 e7 2b 39 ..y..+9\n"
320 " 00a1 - 15 f9 3a 6a 5e 7c 4e ..:j^|N\n"
321 " 00a8 - c9 3b af eb 3b cf 8d .;..;..\n"
322 " 00af - 6a 57 e6 c5 ba bd a6 jW.....\n"
323 " 00b6 - a0 6b 03 d5 a3 9f 99 .k.....\n"
324 " 00bd - 2a ea 88 72 1b 66 6c *..r.fl\n"
325 " 00c4 - 5e 1d 49 d5 1e 1e cc ^.I....\n"
326 " 00cb - 1a b1 d8 f7 91 1e 1e .......\n"
327 " 00d2 - cc 1a ..\n"
328 " 00f6 - <SPACES/NULS>\n",
329 },
330 {
331 .indent = 46,
332 .input = dump,
333 .inlen = DUMP_LEN,
334 .output =
335 " 0000 - 74 45 c6 20 00 00 tE. ..\n"
336 " 0006 - 00 00 00 00 00 00 ......\n"
337 " 000c - 00 00 00 00 36 d8 ....6.\n"
338 " 0012 - 61 48 68 3c c0 68 aHh<.h\n"
339 " 0018 - aa 15 57 77 e3 ec ..Ww..\n"
340 " 001e - b4 98 c6 08 fc 59 .....Y\n"
341 " 0024 - b3 4f 45 cf 4b c2 .OE.K.\n"
342 " 002a - ae 98 b5 eb e0 b5 ......\n"
343 " 0030 - c1 68 ba cf 7c f7 .h..|.\n"
344 " 0036 - 7b 38 43 2f b9 0e {8C/..\n"
345 " 003c - 23 02 b9 4f 8c 26 #..O.&\n"
346 " 0042 - eb ef 70 98 82 a7 ..p...\n"
347 " 0048 - b9 78 c5 08 96 99 .x....\n"
348 " 004e - b3 84 a3 4f fb d7 ...O..\n"
349 " 0054 - 38 a9 d9 d4 53 0f 8...S.\n"
350 " 005a - 4f 64 97 df cf f3 Od....\n"
351 " 0060 - 4f c8 d2 56 3f 0d O..V?.\n"
352 " 0066 - 72 d4 55 98 89 b0 r.U...\n"
353 " 006c - 45 26 3f 7a bd 9d E&?z..\n"
354 " 0072 - 96 15 a2 10 14 85 ......\n"
355 " 0078 - aa a1 7c 84 fb c4 ..|...\n"
356 " 007e - a5 7b c6 e3 ad 85 .{....\n"
357 " 0084 - 57 96 bb 81 18 0c W.....\n"
358 " 008a - ed 2f f7 6a 4c 4d ./.jLM\n"
359 " 0090 - 59 e1 cc c5 3a 9f Y...:.\n"
360 " 0096 - 48 fc 1d 7c 0d a4 H..|..\n"
361 " 009c - 79 96 e7 2b 39 15 y..+9.\n"
362 " 00a2 - f9 3a 6a 5e 7c 4e .:j^|N\n"
363 " 00a8 - c9 3b af eb 3b cf .;..;.\n"
364 " 00ae - 8d 6a 57 e6 c5 ba .jW...\n"
365 " 00b4 - bd a6 a0 6b 03 d5 ...k..\n"
366 " 00ba - a3 9f 99 2a ea 88 ...*..\n"
367 " 00c0 - 72 1b 66 6c 5e 1d r.fl^.\n"
368 " 00c6 - 49 d5 1e 1e cc 1a I.....\n"
369 " 00cc - b1 d8 f7 91 1e 1e ......\n"
370 " 00d2 - cc 1a ..\n"
371 " 00f6 - <SPACES/NULS>\n",
372 },
373 {
374 .indent = 53,
375 .input = dump,
376 .inlen = DUMP_LEN,
377 .output =
378 " 0000 - 74 45 c6 20 tE. \n"
379 " 0004 - 00 00 00 00 ....\n"
380 " 0008 - 00 00 00 00 ....\n"
381 " 000c - 00 00 00 00 ....\n"
382 " 0010 - 36 d8 61 48 6.aH\n"
383 " 0014 - 68 3c c0 68 h<.h\n"
384 " 0018 - aa 15 57 77 ..Ww\n"
385 " 001c - e3 ec b4 98 ....\n"
386 " 0020 - c6 08 fc 59 ...Y\n"
387 " 0024 - b3 4f 45 cf .OE.\n"
388 " 0028 - 4b c2 ae 98 K...\n"
389 " 002c - b5 eb e0 b5 ....\n"
390 " 0030 - c1 68 ba cf .h..\n"
391 " 0034 - 7c f7 7b 38 |.{8\n"
392 " 0038 - 43 2f b9 0e C/..\n"
393 " 003c - 23 02 b9 4f #..O\n"
394 " 0040 - 8c 26 eb ef .&..\n"
395 " 0044 - 70 98 82 a7 p...\n"
396 " 0048 - b9 78 c5 08 .x..\n"
397 " 004c - 96 99 b3 84 ....\n"
398 " 0050 - a3 4f fb d7 .O..\n"
399 " 0054 - 38 a9 d9 d4 8...\n"
400 " 0058 - 53 0f 4f 64 S.Od\n"
401 " 005c - 97 df cf f3 ....\n"
402 " 0060 - 4f c8 d2 56 O..V\n"
403 " 0064 - 3f 0d 72 d4 ?.r.\n"
404 " 0068 - 55 98 89 b0 U...\n"
405 " 006c - 45 26 3f 7a E&?z\n"
406 " 0070 - bd 9d 96 15 ....\n"
407 " 0074 - a2 10 14 85 ....\n"
408 " 0078 - aa a1 7c 84 ..|.\n"
409 " 007c - fb c4 a5 7b ...{\n"
410 " 0080 - c6 e3 ad 85 ....\n"
411 " 0084 - 57 96 bb 81 W...\n"
412 " 0088 - 18 0c ed 2f .../\n"
413 " 008c - f7 6a 4c 4d .jLM\n"
414 " 0090 - 59 e1 cc c5 Y...\n"
415 " 0094 - 3a 9f 48 fc :.H.\n"
416 " 0098 - 1d 7c 0d a4 .|..\n"
417 " 009c - 79 96 e7 2b y..+\n"
418 " 00a0 - 39 15 f9 3a 9..:\n"
419 " 00a4 - 6a 5e 7c 4e j^|N\n"
420 " 00a8 - c9 3b af eb .;..\n"
421 " 00ac - 3b cf 8d 6a ;..j\n"
422 " 00b0 - 57 e6 c5 ba W...\n"
423 " 00b4 - bd a6 a0 6b ...k\n"
424 " 00b8 - 03 d5 a3 9f ....\n"
425 " 00bc - 99 2a ea 88 .*..\n"
426 " 00c0 - 72 1b 66 6c r.fl\n"
427 " 00c4 - 5e 1d 49 d5 ^.I.\n"
428 " 00c8 - 1e 1e cc 1a ....\n"
429 " 00cc - b1 d8 f7 91 ....\n"
430 " 00d0 - 1e 1e cc 1a ....\n"
431 " 00f6 - <SPACES/NULS>\n",
432 },
433 {
434 .indent = 60,
435 .input = dump,
436 .inlen = DUMP_LEN,
437 .output =
438 " 0000 - 74 45 tE\n"
439 " 0002 - c6 20 . \n"
440 " 0004 - 00 00 ..\n"
441 " 0006 - 00 00 ..\n"
442 " 0008 - 00 00 ..\n"
443 " 000a - 00 00 ..\n"
444 " 000c - 00 00 ..\n"
445 " 000e - 00 00 ..\n"
446 " 0010 - 36 d8 6.\n"
447 " 0012 - 61 48 aH\n"
448 " 0014 - 68 3c h<\n"
449 " 0016 - c0 68 .h\n"
450 " 0018 - aa 15 ..\n"
451 " 001a - 57 77 Ww\n"
452 " 001c - e3 ec ..\n"
453 " 001e - b4 98 ..\n"
454 " 0020 - c6 08 ..\n"
455 " 0022 - fc 59 .Y\n"
456 " 0024 - b3 4f .O\n"
457 " 0026 - 45 cf E.\n"
458 " 0028 - 4b c2 K.\n"
459 " 002a - ae 98 ..\n"
460 " 002c - b5 eb ..\n"
461 " 002e - e0 b5 ..\n"
462 " 0030 - c1 68 .h\n"
463 " 0032 - ba cf ..\n"
464 " 0034 - 7c f7 |.\n"
465 " 0036 - 7b 38 {8\n"
466 " 0038 - 43 2f C/\n"
467 " 003a - b9 0e ..\n"
468 " 003c - 23 02 #.\n"
469 " 003e - b9 4f .O\n"
470 " 0040 - 8c 26 .&\n"
471 " 0042 - eb ef ..\n"
472 " 0044 - 70 98 p.\n"
473 " 0046 - 82 a7 ..\n"
474 " 0048 - b9 78 .x\n"
475 " 004a - c5 08 ..\n"
476 " 004c - 96 99 ..\n"
477 " 004e - b3 84 ..\n"
478 " 0050 - a3 4f .O\n"
479 " 0052 - fb d7 ..\n"
480 " 0054 - 38 a9 8.\n"
481 " 0056 - d9 d4 ..\n"
482 " 0058 - 53 0f S.\n"
483 " 005a - 4f 64 Od\n"
484 " 005c - 97 df ..\n"
485 " 005e - cf f3 ..\n"
486 " 0060 - 4f c8 O.\n"
487 " 0062 - d2 56 .V\n"
488 " 0064 - 3f 0d ?.\n"
489 " 0066 - 72 d4 r.\n"
490 " 0068 - 55 98 U.\n"
491 " 006a - 89 b0 ..\n"
492 " 006c - 45 26 E&\n"
493 " 006e - 3f 7a ?z\n"
494 " 0070 - bd 9d ..\n"
495 " 0072 - 96 15 ..\n"
496 " 0074 - a2 10 ..\n"
497 " 0076 - 14 85 ..\n"
498 " 0078 - aa a1 ..\n"
499 " 007a - 7c 84 |.\n"
500 " 007c - fb c4 ..\n"
501 " 007e - a5 7b .{\n"
502 " 0080 - c6 e3 ..\n"
503 " 0082 - ad 85 ..\n"
504 " 0084 - 57 96 W.\n"
505 " 0086 - bb 81 ..\n"
506 " 0088 - 18 0c ..\n"
507 " 008a - ed 2f ./\n"
508 " 008c - f7 6a .j\n"
509 " 008e - 4c 4d LM\n"
510 " 0090 - 59 e1 Y.\n"
511 " 0092 - cc c5 ..\n"
512 " 0094 - 3a 9f :.\n"
513 " 0096 - 48 fc H.\n"
514 " 0098 - 1d 7c .|\n"
515 " 009a - 0d a4 ..\n"
516 " 009c - 79 96 y.\n"
517 " 009e - e7 2b .+\n"
518 " 00a0 - 39 15 9.\n"
519 " 00a2 - f9 3a .:\n"
520 " 00a4 - 6a 5e j^\n"
521 " 00a6 - 7c 4e |N\n"
522 " 00a8 - c9 3b .;\n"
523 " 00aa - af eb ..\n"
524 " 00ac - 3b cf ;.\n"
525 " 00ae - 8d 6a .j\n"
526 " 00b0 - 57 e6 W.\n"
527 " 00b2 - c5 ba ..\n"
528 " 00b4 - bd a6 ..\n"
529 " 00b6 - a0 6b .k\n"
530 " 00b8 - 03 d5 ..\n"
531 " 00ba - a3 9f ..\n"
532 " 00bc - 99 2a .*\n"
533 " 00be - ea 88 ..\n"
534 " 00c0 - 72 1b r.\n"
535 " 00c2 - 66 6c fl\n"
536 " 00c4 - 5e 1d ^.\n"
537 " 00c6 - 49 d5 I.\n"
538 " 00c8 - 1e 1e ..\n"
539 " 00ca - cc 1a ..\n"
540 " 00cc - b1 d8 ..\n"
541 " 00ce - f7 91 ..\n"
542 " 00d0 - 1e 1e ..\n"
543 " 00d2 - cc 1a ..\n"
544 " 00f6 - <SPACES/NULS>\n",
545 },
546 {
547 .indent = 67,
548 .input = dump,
549 .inlen = DUMP_LEN,
550 .output =
551 " 0000 - 74 t\n"
552 " 0001 - 45 E\n"
553 " 0002 - c6 .\n"
554 " 0003 - 20 \n"
555 " 0004 - 00 .\n"
556 " 0005 - 00 .\n"
557 " 0006 - 00 .\n"
558 " 0007 - 00 .\n"
559 " 0008 - 00 .\n"
560 " 0009 - 00 .\n"
561 " 000a - 00 .\n"
562 " 000b - 00 .\n"
563 " 000c - 00 .\n"
564 " 000d - 00 .\n"
565 " 000e - 00 .\n"
566 " 000f - 00 .\n"
567 " 0010 - 36 6\n"
568 " 0011 - d8 .\n"
569 " 0012 - 61 a\n"
570 " 0013 - 48 H\n"
571 " 0014 - 68 h\n"
572 " 0015 - 3c <\n"
573 " 0016 - c0 .\n"
574 " 0017 - 68 h\n"
575 " 0018 - aa .\n"
576 " 0019 - 15 .\n"
577 " 001a - 57 W\n"
578 " 001b - 77 w\n"
579 " 001c - e3 .\n"
580 " 001d - ec .\n"
581 " 001e - b4 .\n"
582 " 001f - 98 .\n"
583 " 0020 - c6 .\n"
584 " 0021 - 08 .\n"
585 " 0022 - fc .\n"
586 " 0023 - 59 Y\n"
587 " 0024 - b3 .\n"
588 " 0025 - 4f O\n"
589 " 0026 - 45 E\n"
590 " 0027 - cf .\n"
591 " 0028 - 4b K\n"
592 " 0029 - c2 .\n"
593 " 002a - ae .\n"
594 " 002b - 98 .\n"
595 " 002c - b5 .\n"
596 " 002d - eb .\n"
597 " 002e - e0 .\n"
598 " 002f - b5 .\n"
599 " 0030 - c1 .\n"
600 " 0031 - 68 h\n"
601 " 0032 - ba .\n"
602 " 0033 - cf .\n"
603 " 0034 - 7c |\n"
604 " 0035 - f7 .\n"
605 " 0036 - 7b {\n"
606 " 0037 - 38 8\n"
607 " 0038 - 43 C\n"
608 " 0039 - 2f /\n"
609 " 003a - b9 .\n"
610 " 003b - 0e .\n"
611 " 003c - 23 #\n"
612 " 003d - 02 .\n"
613 " 003e - b9 .\n"
614 " 003f - 4f O\n"
615 " 0040 - 8c .\n"
616 " 0041 - 26 &\n"
617 " 0042 - eb .\n"
618 " 0043 - ef .\n"
619 " 0044 - 70 p\n"
620 " 0045 - 98 .\n"
621 " 0046 - 82 .\n"
622 " 0047 - a7 .\n"
623 " 0048 - b9 .\n"
624 " 0049 - 78 x\n"
625 " 004a - c5 .\n"
626 " 004b - 08 .\n"
627 " 004c - 96 .\n"
628 " 004d - 99 .\n"
629 " 004e - b3 .\n"
630 " 004f - 84 .\n"
631 " 0050 - a3 .\n"
632 " 0051 - 4f O\n"
633 " 0052 - fb .\n"
634 " 0053 - d7 .\n"
635 " 0054 - 38 8\n"
636 " 0055 - a9 .\n"
637 " 0056 - d9 .\n"
638 " 0057 - d4 .\n"
639 " 0058 - 53 S\n"
640 " 0059 - 0f .\n"
641 " 005a - 4f O\n"
642 " 005b - 64 d\n"
643 " 005c - 97 .\n"
644 " 005d - df .\n"
645 " 005e - cf .\n"
646 " 005f - f3 .\n"
647 " 0060 - 4f O\n"
648 " 0061 - c8 .\n"
649 " 0062 - d2 .\n"
650 " 0063 - 56 V\n"
651 " 0064 - 3f ?\n"
652 " 0065 - 0d .\n"
653 " 0066 - 72 r\n"
654 " 0067 - d4 .\n"
655 " 0068 - 55 U\n"
656 " 0069 - 98 .\n"
657 " 006a - 89 .\n"
658 " 006b - b0 .\n"
659 " 006c - 45 E\n"
660 " 006d - 26 &\n"
661 " 006e - 3f ?\n"
662 " 006f - 7a z\n"
663 " 0070 - bd .\n"
664 " 0071 - 9d .\n"
665 " 0072 - 96 .\n"
666 " 0073 - 15 .\n"
667 " 0074 - a2 .\n"
668 " 0075 - 10 .\n"
669 " 0076 - 14 .\n"
670 " 0077 - 85 .\n"
671 " 0078 - aa .\n"
672 " 0079 - a1 .\n"
673 " 007a - 7c |\n"
674 " 007b - 84 .\n"
675 " 007c - fb .\n"
676 " 007d - c4 .\n"
677 " 007e - a5 .\n"
678 " 007f - 7b {\n"
679 " 0080 - c6 .\n"
680 " 0081 - e3 .\n"
681 " 0082 - ad .\n"
682 " 0083 - 85 .\n"
683 " 0084 - 57 W\n"
684 " 0085 - 96 .\n"
685 " 0086 - bb .\n"
686 " 0087 - 81 .\n"
687 " 0088 - 18 .\n"
688 " 0089 - 0c .\n"
689 " 008a - ed .\n"
690 " 008b - 2f /\n"
691 " 008c - f7 .\n"
692 " 008d - 6a j\n"
693 " 008e - 4c L\n"
694 " 008f - 4d M\n"
695 " 0090 - 59 Y\n"
696 " 0091 - e1 .\n"
697 " 0092 - cc .\n"
698 " 0093 - c5 .\n"
699 " 0094 - 3a :\n"
700 " 0095 - 9f .\n"
701 " 0096 - 48 H\n"
702 " 0097 - fc .\n"
703 " 0098 - 1d .\n"
704 " 0099 - 7c |\n"
705 " 009a - 0d .\n"
706 " 009b - a4 .\n"
707 " 009c - 79 y\n"
708 " 009d - 96 .\n"
709 " 009e - e7 .\n"
710 " 009f - 2b +\n"
711 " 00a0 - 39 9\n"
712 " 00a1 - 15 .\n"
713 " 00a2 - f9 .\n"
714 " 00a3 - 3a :\n"
715 " 00a4 - 6a j\n"
716 " 00a5 - 5e ^\n"
717 " 00a6 - 7c |\n"
718 " 00a7 - 4e N\n"
719 " 00a8 - c9 .\n"
720 " 00a9 - 3b ;\n"
721 " 00aa - af .\n"
722 " 00ab - eb .\n"
723 " 00ac - 3b ;\n"
724 " 00ad - cf .\n"
725 " 00ae - 8d .\n"
726 " 00af - 6a j\n"
727 " 00b0 - 57 W\n"
728 " 00b1 - e6 .\n"
729 " 00b2 - c5 .\n"
730 " 00b3 - ba .\n"
731 " 00b4 - bd .\n"
732 " 00b5 - a6 .\n"
733 " 00b6 - a0 .\n"
734 " 00b7 - 6b k\n"
735 " 00b8 - 03 .\n"
736 " 00b9 - d5 .\n"
737 " 00ba - a3 .\n"
738 " 00bb - 9f .\n"
739 " 00bc - 99 .\n"
740 " 00bd - 2a *\n"
741 " 00be - ea .\n"
742 " 00bf - 88 .\n"
743 " 00c0 - 72 r\n"
744 " 00c1 - 1b .\n"
745 " 00c2 - 66 f\n"
746 " 00c3 - 6c l\n"
747 " 00c4 - 5e ^\n"
748 " 00c5 - 1d .\n"
749 " 00c6 - 49 I\n"
750 " 00c7 - d5 .\n"
751 " 00c8 - 1e .\n"
752 " 00c9 - 1e .\n"
753 " 00ca - cc .\n"
754 " 00cb - 1a .\n"
755 " 00cc - b1 .\n"
756 " 00cd - d8 .\n"
757 " 00ce - f7 .\n"
758 " 00cf - 91 .\n"
759 " 00d0 - 1e .\n"
760 " 00d1 - 1e .\n"
761 " 00d2 - cc .\n"
762 " 00d3 - 1a .\n"
763 " 00f6 - <SPACES/NULS>\n",
764 },
765 {
766 .indent = 4,
767 .input = bytes,
768 .inlen = BYTES_LEN,
769 .output =
770 " 0000 - 00 01 02 03 04 05 06 07-08 09 0a 0b 0c 0d 0e 0f ................\n"
771 " 0010 - 10 11 12 13 14 15 16 17-18 19 1a 1b 1c 1d 1e 1f ................\n"
772 " 0020 - 20 21 22 23 24 25 26 27-28 29 2a 2b 2c 2d 2e 2f !\"#$%&'()*+,-./\n"
773 " 0030 - 30 31 32 33 34 35 36 37-38 39 3a 3b 3c 3d 3e 3f 0123456789:;<=>?\n"
774 " 0040 - 40 41 42 43 44 45 46 47-48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO\n"
775 " 0050 - 50 51 52 53 54 55 56 57-58 59 5a 5b 5c 5d 5e 5f PQRSTUVWXYZ[\\]^_\n"
776 " 0060 - 60 61 62 63 64 65 66 67-68 69 6a 6b 6c 6d 6e 6f `abcdefghijklmno\n"
777 " 0070 - 70 71 72 73 74 75 76 77-78 79 7a 7b 7c 7d 7e 7f pqrstuvwxyz{|}~.\n"
778 " 0080 - 80 81 82 83 84 85 86 87-88 89 8a 8b 8c 8d 8e 8f ................\n"
779 " 0090 - 90 91 92 93 94 95 96 97-98 99 9a 9b 9c 9d 9e 9f ................\n"
780 " 00a0 - a0 a1 a2 a3 a4 a5 a6 a7-a8 a9 aa ab ac ad ae af ................\n"
781 " 00b0 - b0 b1 b2 b3 b4 b5 b6 b7-b8 b9 ba bb bc bd be bf ................\n"
782 " 00c0 - c0 c1 c2 c3 c4 c5 c6 c7-c8 c9 ca cb cc cd ce cf ................\n"
783 " 00d0 - d0 d1 d2 d3 d4 d5 d6 d7-d8 d9 da db dc dd de df ................\n"
784 " 00e0 - e0 e1 e2 e3 e4 e5 e6 e7-e8 e9 ea eb ec ed ee ef ................\n"
785 " 00f0 - f0 f1 f2 f3 f4 f5 f6 f7-f8 f9 fa fb fc fd fe ff ................\n",
786 },
787 };
788
789 #define N_TESTS (sizeof(bio_dump_testcases) / sizeof(bio_dump_testcases[0]))
790
791 static int
bio_dump_test(const struct bio_dump_testcase * tc)792 bio_dump_test(const struct bio_dump_testcase *tc)
793 {
794 BIO *bio;
795 char *got;
796 long got_len;
797 int ret;
798 int failed = 1;
799
800 if ((bio = BIO_new(BIO_s_mem())) == NULL)
801 errx(1, "BIO_new");
802
803 if ((ret = BIO_dump_indent(bio, tc->input, tc->inlen, tc->indent)) == -1)
804 errx(1, "BIO_dump_indent");
805 if ((got_len = BIO_get_mem_data(bio, &got)) < 0)
806 errx(1, "BIO_get_mem_data");
807 if (ret != got_len || strlen(tc->output) != (size_t)ret) {
808 fprintf(stderr, "indent %d: ret %d, got_len %ld, strlen %zu\n",
809 tc->indent, ret, got_len, strlen(tc->output));
810 goto err;
811 }
812 if (strncmp(tc->output, got, got_len) != 0) {
813 fprintf(stderr, "%d: mismatch\n", tc->indent);
814 goto err;
815 }
816
817 failed = 0;
818
819 err:
820 BIO_free(bio);
821
822 return failed;
823 }
824
825 int
main(void)826 main(void)
827 {
828 size_t i;
829 int failed = 0;
830
831 for (i = 0; i < N_TESTS; i++)
832 failed |= bio_dump_test(&bio_dump_testcases[i]);
833
834 return failed;
835 }
836