OpenCoverage

b_dump.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/bio/b_dump.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10/*-
11 * Stolen from tjh's ssl/ssl_trc.c stuff.-
12 */-
13-
14#include <stdio.h>-
15#include "bio_lcl.h"-
16-
17#define DUMP_WIDTH 16-
18#define DUMP_WIDTH_LESS_INDENT(i) (DUMP_WIDTH - ((i - (i > 6 ? 6 : i) + 3) / 4))-
19-
20#define SPACE(buf, pos, n) (sizeof(buf) - (pos) > (n))-
21-
22int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),-
23 void *u, const char *s, int len)-
24{-
25 return BIO_dump_indent_cb(cb, u, s, len, 0);
never executed: return BIO_dump_indent_cb(cb, u, s, len, 0);
0
26}-
27-
28int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),-
29 void *u, const char *s, int len, int indent)-
30{-
31 int ret = 0;-
32 char buf[288 + 1];-
33 int i, j, rows, n;-
34 unsigned char ch;-
35 int dump_width;-
36-
37 if (indent < 0)
indent < 0Description
TRUEnever evaluated
FALSEevaluated 4950 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4950
38 indent = 0;
never executed: indent = 0;
0
39 else if (indent > 128)
indent > 128Description
TRUEnever evaluated
FALSEevaluated 4950 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4950
40 indent = 128;
never executed: indent = 128;
0
41-
42 dump_width = DUMP_WIDTH_LESS_INDENT(indent);
indent > 6Description
TRUEevaluated 4404 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 546 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
546-4404
43 rows = len / dump_width;-
44 if ((rows * dump_width) < len)
(rows * dump_width) < lenDescription
TRUEevaluated 4374 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 576 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
576-4374
45 rows++;
executed 4374 times by 1 test: rows++;
Executed by:
  • libcrypto.so.1.1
4374
46 for (i = 0; i < rows; i++) {
i < rowsDescription
TRUEevaluated 8186 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4950 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4950-8186
47 n = BIO_snprintf(buf, sizeof(buf), "%*s%04x - ", indent, "",-
48 i * dump_width);-
49 for (j = 0; j < dump_width; j++) {
j < dump_widthDescription
TRUEevaluated 119998 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 8186 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
8186-119998
50 if (SPACE(buf, n, 3)) {
(sizeof(buf) - (n) > (3))Description
TRUEevaluated 119998 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-119998
51 if (((i * dump_width) + j) >= len) {
((i * dump_width) + j) >= lenDescription
TRUEevaluated 44565 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 75433 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
44565-75433
52 strcpy(buf + n, " ");-
53 } else {
executed 44565 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
44565
54 ch = ((unsigned char)*(s + i * dump_width + j)) & 0xff;-
55 BIO_snprintf(buf + n, 4, "%02x%c", ch,-
56 j == 7 ? '-' : ' ');-
57 }
executed 75433 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
75433
58 n += 3;-
59 }
executed 119998 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
119998
60 }
executed 119998 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
119998
61 if (SPACE(buf, n, 2)) {
(sizeof(buf) - (n) > (2))Description
TRUEevaluated 8186 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-8186
62 strcpy(buf + n, " ");-
63 n += 2;-
64 }
executed 8186 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
8186
65 for (j = 0; j < dump_width; j++) {
j < dump_widthDescription
TRUEevaluated 79807 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3812 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
3812-79807
66 if (((i * dump_width) + j) >= len)
((i * dump_width) + j) >= lenDescription
TRUEevaluated 4374 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 75433 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4374-75433
67 break;
executed 4374 times by 1 test: break;
Executed by:
  • libcrypto.so.1.1
4374
68 if (SPACE(buf, n, 1)) {
(sizeof(buf) - (n) > (1))Description
TRUEevaluated 75433 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-75433
69 ch = ((unsigned char)*(s + i * dump_width + j)) & 0xff;-
70#ifndef CHARSET_EBCDIC-
71 buf[n++] = ((ch >= ' ') && (ch <= '~')) ? ch : '.';
(ch >= ' ')Description
TRUEevaluated 40868 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 34565 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(ch <= '~')Description
TRUEevaluated 18648 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 22220 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
18648-40868
72#else-
73 buf[n++] = ((ch >= os_toascii[' ']) && (ch <= os_toascii['~']))-
74 ? os_toebcdic[ch]-
75 : '.';-
76#endif-
77 buf[n] = '\0';-
78 }
executed 75433 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
75433
79 }
executed 75433 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
75433
80 if (SPACE(buf, n, 1)) {
(sizeof(buf) - (n) > (1))Description
TRUEevaluated 8186 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-8186
81 buf[n++] = '\n';-
82 buf[n] = '\0';-
83 }
executed 8186 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
8186
84 /*-
85 * if this is the last call then update the ddt_dump thing so that we-
86 * will move the selection point in the debug window-
87 */-
88 ret += cb((void *)buf, n, u);-
89 }
executed 8186 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
8186
90 return ret;
executed 4950 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
4950
91}-
92-
93#ifndef OPENSSL_NO_STDIO-
94static int write_fp(const void *data, size_t len, void *fp)-
95{-
96 return UP_fwrite(data, len, 1, fp);
never executed: return fwrite(data, len, 1, fp);
0
97}-
98-
99int BIO_dump_fp(FILE *fp, const char *s, int len)-
100{-
101 return BIO_dump_cb(write_fp, fp, s, len);
never executed: return BIO_dump_cb(write_fp, fp, s, len);
0
102}-
103-
104int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent)-
105{-
106 return BIO_dump_indent_cb(write_fp, fp, s, len, indent);
never executed: return BIO_dump_indent_cb(write_fp, fp, s, len, indent);
0
107}-
108#endif-
109-
110static int write_bio(const void *data, size_t len, void *bp)-
111{-
112 return BIO_write((BIO *)bp, (const char *)data, len);
executed 8186 times by 1 test: return BIO_write((BIO *)bp, (const char *)data, len);
Executed by:
  • libcrypto.so.1.1
8186
113}-
114-
115int BIO_dump(BIO *bp, const char *s, int len)-
116{-
117 return BIO_dump_cb(write_bio, bp, s, len);
never executed: return BIO_dump_cb(write_bio, bp, s, len);
0
118}-
119-
120int BIO_dump_indent(BIO *bp, const char *s, int len, int indent)-
121{-
122 return BIO_dump_indent_cb(write_bio, bp, s, len, indent);
executed 4950 times by 1 test: return BIO_dump_indent_cb(write_bio, bp, s, len, indent);
Executed by:
  • libcrypto.so.1.1
4950
123}-
124-
125int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data,-
126 int datalen)-
127{-
128 int i, j = 0;-
129-
130 if (datalen < 1)
datalen < 1Description
TRUEevaluated 1599 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 11530 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1599-11530
131 return 1;
executed 1599 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1599
132-
133 for (i = 0; i < datalen - 1; i++) {
i < datalen - 1Description
TRUEevaluated 127234 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 11530 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
11530-127234
134 if (i && !j)
iDescription
TRUEevaluated 123086 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4148 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
!jDescription
TRUEevaluated 4870 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 118216 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4148-123086
135 BIO_printf(out, "%*s", indent, "");
executed 4870 times by 1 test: BIO_printf(out, "%*s", indent, "");
Executed by:
  • libcrypto.so.1.1
4870
136-
137 BIO_printf(out, "%02X:", data[i]);-
138-
139 j = (j + 1) % width;-
140 if (!j)
!jDescription
TRUEevaluated 5305 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 121929 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
5305-121929
141 BIO_printf(out, "\n");
executed 5305 times by 1 test: BIO_printf(out, "\n");
Executed by:
  • libcrypto.so.1.1
5305
142 }
executed 127234 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
127234
143-
144 if (i && !j)
iDescription
TRUEevaluated 4148 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 7382 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
!jDescription
TRUEevaluated 435 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3713 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
435-7382
145 BIO_printf(out, "%*s", indent, "");
executed 435 times by 1 test: BIO_printf(out, "%*s", indent, "");
Executed by:
  • libcrypto.so.1.1
435
146 BIO_printf(out, "%02X", data[datalen - 1]);-
147 return 1;
executed 11530 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
11530
148}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2