| line |
true |
false |
branch |
|
41
|
2048 |
8 |
for (i = 0; i < 256; i++) { REV_STD[i] = INVAL; REV_URL[i] = INVAL; } |
|
42
|
512 |
8 |
for (i = 0; i < 64; i++) { |
|
61
|
26 |
66 |
if (need <= *out_cap) return 0; |
|
63
|
4 |
62 |
new_cap = *out_cap ? *out_cap : 64; |
|
64
|
90 |
66 |
while (new_cap < need) { |
|
65
|
0 |
90 |
if (new_cap > (SIZE_MAX / 2)) { new_cap = need; break; } |
|
69
|
0 |
66 |
if (!new_buf) return -1; |
|
97
|
0 |
23 |
if (out_reserve((void **)out, cap, *len + elen) < 0) return B64_ERR_NOMEM; |
|
114
|
0 |
4 |
if (out_reserve((void **)out, cap, need) < 0) return B64_ERR_NOMEM; |
|
143
|
7 |
26 |
if (!rev_initialised) rev_init(); |
|
144
|
33 |
0 |
if (err_offset) *err_offset = 0; |
|
146
|
3 |
30 |
alpha = opts->urlsafe ? ALPHA_URL : ALPHA_STD; |
|
147
|
33 |
0 |
eol = opts->eol ? opts->eol : "\n"; |
|
151
|
2 |
31 |
if (opts->pem) { |
|
154
|
0 |
2 |
if (rc) return rc; |
|
159
|
6 |
27 |
if (wrap > 0 && encoded_chars > 0) { |
|
|
6 |
0 |
if (wrap > 0 && encoded_chars > 0) { |
|
163
|
0 |
33 |
if (out_reserve((void **)out, out_cap, |
|
182
|
197397 |
33 |
for (i = 0; i + 3 <= in_len; i += 3) { |
|
186
|
306 |
197091 |
EMIT(alpha[(triplet >> 18) & 0x3F]); |
|
|
0 |
306 |
EMIT(alpha[(triplet >> 18) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(triplet >> 18) & 0x3F]); |
|
187
|
306 |
197091 |
EMIT(alpha[(triplet >> 12) & 0x3F]); |
|
|
0 |
306 |
EMIT(alpha[(triplet >> 12) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(triplet >> 12) & 0x3F]); |
|
188
|
306 |
197091 |
EMIT(alpha[(triplet >> 6) & 0x3F]); |
|
|
0 |
306 |
EMIT(alpha[(triplet >> 6) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(triplet >> 6) & 0x3F]); |
|
189
|
306 |
197091 |
EMIT(alpha[ triplet & 0x3F]); |
|
|
17 |
289 |
EMIT(alpha[ triplet & 0x3F]); |
|
|
0 |
17 |
EMIT(alpha[ triplet & 0x3F]); |
|
194
|
13 |
20 |
if (tail == 1) { |
|
196
|
2 |
11 |
EMIT(alpha[(b >> 18) & 0x3F]); |
|
|
0 |
2 |
EMIT(alpha[(b >> 18) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(b >> 18) & 0x3F]); |
|
197
|
2 |
11 |
EMIT(alpha[(b >> 12) & 0x3F]); |
|
|
0 |
2 |
EMIT(alpha[(b >> 12) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(b >> 12) & 0x3F]); |
|
198
|
12 |
1 |
if (opts->padding) { EMIT('='); EMIT('='); } |
|
|
2 |
10 |
if (opts->padding) { EMIT('='); EMIT('='); } |
|
|
0 |
2 |
if (opts->padding) { EMIT('='); EMIT('='); } |
|
|
0 |
0 |
if (opts->padding) { EMIT('='); EMIT('='); } |
|
|
2 |
10 |
if (opts->padding) { EMIT('='); EMIT('='); } |
|
|
0 |
2 |
if (opts->padding) { EMIT('='); EMIT('='); } |
|
|
0 |
0 |
if (opts->padding) { EMIT('='); EMIT('='); } |
|
199
|
10 |
10 |
} else if (tail == 2) { |
|
201
|
4 |
6 |
EMIT(alpha[(b >> 18) & 0x3F]); |
|
|
0 |
4 |
EMIT(alpha[(b >> 18) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(b >> 18) & 0x3F]); |
|
202
|
4 |
6 |
EMIT(alpha[(b >> 12) & 0x3F]); |
|
|
0 |
4 |
EMIT(alpha[(b >> 12) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(b >> 12) & 0x3F]); |
|
203
|
4 |
6 |
EMIT(alpha[(b >> 6) & 0x3F]); |
|
|
0 |
4 |
EMIT(alpha[(b >> 6) & 0x3F]); |
|
|
0 |
0 |
EMIT(alpha[(b >> 6) & 0x3F]); |
|
204
|
9 |
1 |
if (opts->padding) EMIT('='); |
|
|
4 |
5 |
if (opts->padding) EMIT('='); |
|
|
0 |
4 |
if (opts->padding) EMIT('='); |
|
|
0 |
0 |
if (opts->padding) EMIT('='); |
|
214
|
6 |
27 |
if ((wrap > 0 && wrap_col != 0) || opts->pem) { |
|
|
0 |
6 |
if ((wrap > 0 && wrap_col != 0) || opts->pem) { |
|
|
0 |
27 |
if ((wrap > 0 && wrap_col != 0) || opts->pem) { |
|
216
|
0 |
6 |
if (rc) return rc; |
|
219
|
2 |
31 |
if (opts->pem) { |
|
222
|
0 |
2 |
if (rc) return rc; |
|
244
|
19 |
0 |
if (needle_len == 0 || haystack_len < needle_len) return NULL; |
|
|
0 |
19 |
if (needle_len == 0 || haystack_len < needle_len) return NULL; |
|
246
|
279 |
1 |
for (p = haystack; p <= limit; p++) { |
|
247
|
18 |
261 |
if (memcmp(p, needle, needle_len) == 0) return p; |
|
274
|
0 |
5 |
if (!begin) { |
|
275
|
0 |
0 |
if (err_offset) *err_offset = 0; |
|
282
|
0 |
5 |
if (!begin_close) { |
|
283
|
0 |
0 |
if (err_offset) *err_offset = (size_t)(begin - in); |
|
290
|
10 |
0 |
while (body < in + in_len && (*body == '\r' || *body == '\n')) body++; |
|
|
0 |
10 |
while (body < in + in_len && (*body == '\r' || *body == '\n')) body++; |
|
|
5 |
5 |
while (body < in + in_len && (*body == '\r' || *body == '\n')) body++; |
|
294
|
1 |
4 |
if (!end) { |
|
295
|
1 |
0 |
if (err_offset) *err_offset = (size_t)(begin - in); |
|
302
|
0 |
4 |
if (!end_close) { |
|
303
|
0 |
0 |
if (err_offset) *err_offset = (size_t)(end - in); |
|
310
|
4 |
0 |
if (blab_len != elab_len |
|
311
|
1 |
3 |
|| memcmp(begin_label, end_label, blab_len) != 0) |
|
313
|
1 |
0 |
if (err_offset) *err_offset = (size_t)(end - in); |
|
337
|
1 |
33 |
if (!rev_initialised) rev_init(); |
|
338
|
34 |
0 |
if (err_offset) *err_offset = 0; |
|
340
|
2 |
32 |
rev = opts->urlsafe ? REV_URL : REV_STD; |
|
345
|
5 |
29 |
if (opts->pem) { |
|
347
|
2 |
3 |
if (rc) return rc; |
|
351
|
0 |
32 |
if (out_reserve((void **)out, out_cap, |
|
357
|
788916 |
30 |
for (i = 0; i < body_len; i++) { |
|
361
|
28 |
788888 |
if (v == PAD) { |
|
365
|
34 |
788854 |
if (v == INVAL) { |
|
366
|
2 |
32 |
if (opts->strict) { |
|
367
|
2 |
0 |
if (err_offset) *err_offset = |
|
374
|
0 |
788854 |
if (saw_pad && opts->strict) { |
|
|
0 |
0 |
if (saw_pad && opts->strict) { |
|
375
|
0 |
0 |
if (err_offset) *err_offset = (size_t)(body - in) + i; |
|
381
|
591632 |
197222 |
if (bits >= 8) { |
|
389
|
20 |
10 |
if (bits != 0 && bits != 2 && bits != 4) { |
|
|
13 |
7 |
if (bits != 0 && bits != 2 && bits != 4) { |
|
|
1 |
12 |
if (bits != 0 && bits != 2 && bits != 4) { |