Branch Coverage

b64.c
Criterion Covered Total %
branch 131 202 64.8


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