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 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 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