| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/bio/b_dump.c |
| Source code | Switch to Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | - | |||||||||||||
| 22 | int 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 | - | |||||||||||||
| 28 | int 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)
| 0-4950 | ||||||||||||
| 38 | indent = 0; never executed: indent = 0; | 0 | ||||||||||||
| 39 | else if (indent > 128)
| 0-4950 | ||||||||||||
| 40 | indent = 128; never executed: indent = 128; | 0 | ||||||||||||
| 41 | - | |||||||||||||
| 42 | dump_width = DUMP_WIDTH_LESS_INDENT(indent);
| 546-4404 | ||||||||||||
| 43 | rows = len / dump_width; | - | ||||||||||||
| 44 | if ((rows * dump_width) < len)
| 576-4374 | ||||||||||||
| 45 | rows++; executed 4374 times by 1 test: rows++;Executed by:
| 4374 | ||||||||||||
| 46 | for (i = 0; i < rows; i++) {
| 4950-8186 | ||||||||||||
| 47 | n = BIO_snprintf(buf, sizeof(buf), "%*s%04x - ", indent, "", | - | ||||||||||||
| 48 | i * dump_width); | - | ||||||||||||
| 49 | for (j = 0; j < dump_width; j++) {
| 8186-119998 | ||||||||||||
| 50 | if (SPACE(buf, n, 3)) {
| 0-119998 | ||||||||||||
| 51 | if (((i * dump_width) + j) >= len) {
| 44565-75433 | ||||||||||||
| 52 | strcpy(buf + n, " "); | - | ||||||||||||
| 53 | } else { executed 44565 times by 1 test: end of blockExecuted by:
| 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 blockExecuted by:
| 75433 | ||||||||||||
| 58 | n += 3; | - | ||||||||||||
| 59 | } executed 119998 times by 1 test: end of blockExecuted by:
| 119998 | ||||||||||||
| 60 | } executed 119998 times by 1 test: end of blockExecuted by:
| 119998 | ||||||||||||
| 61 | if (SPACE(buf, n, 2)) {
| 0-8186 | ||||||||||||
| 62 | strcpy(buf + n, " "); | - | ||||||||||||
| 63 | n += 2; | - | ||||||||||||
| 64 | } executed 8186 times by 1 test: end of blockExecuted by:
| 8186 | ||||||||||||
| 65 | for (j = 0; j < dump_width; j++) {
| 3812-79807 | ||||||||||||
| 66 | if (((i * dump_width) + j) >= len)
| 4374-75433 | ||||||||||||
| 67 | break; executed 4374 times by 1 test: break;Executed by:
| 4374 | ||||||||||||
| 68 | if (SPACE(buf, n, 1)) {
| 0-75433 | ||||||||||||
| 69 | ch = ((unsigned char)*(s + i * dump_width + j)) & 0xff; | - | ||||||||||||
| 70 | #ifndef CHARSET_EBCDIC | - | ||||||||||||
| 71 | buf[n++] = ((ch >= ' ') && (ch <= '~')) ? ch : '.';
| 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 blockExecuted by:
| 75433 | ||||||||||||
| 79 | } executed 75433 times by 1 test: end of blockExecuted by:
| 75433 | ||||||||||||
| 80 | if (SPACE(buf, n, 1)) {
| 0-8186 | ||||||||||||
| 81 | buf[n++] = '\n'; | - | ||||||||||||
| 82 | buf[n] = '\0'; | - | ||||||||||||
| 83 | } executed 8186 times by 1 test: end of blockExecuted by:
| 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 blockExecuted by:
| 8186 | ||||||||||||
| 90 | return ret; executed 4950 times by 1 test: return ret;Executed by:
| 4950 | ||||||||||||
| 91 | } | - | ||||||||||||
| 92 | - | |||||||||||||
| 93 | #ifndef OPENSSL_NO_STDIO | - | ||||||||||||
| 94 | static 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 | - | |||||||||||||
| 99 | int 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 | - | |||||||||||||
| 104 | int 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 | - | |||||||||||||
| 110 | static 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:
| 8186 | ||||||||||||
| 113 | } | - | ||||||||||||
| 114 | - | |||||||||||||
| 115 | int 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 | - | |||||||||||||
| 120 | int 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:
| 4950 | ||||||||||||
| 123 | } | - | ||||||||||||
| 124 | - | |||||||||||||
| 125 | int 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)
| 1599-11530 | ||||||||||||
| 131 | return 1; executed 1599 times by 1 test: return 1;Executed by:
| 1599 | ||||||||||||
| 132 | - | |||||||||||||
| 133 | for (i = 0; i < datalen - 1; i++) {
| 11530-127234 | ||||||||||||
| 134 | if (i && !j)
| 4148-123086 | ||||||||||||
| 135 | BIO_printf(out, "%*s", indent, ""); executed 4870 times by 1 test: BIO_printf(out, "%*s", indent, "");Executed by:
| 4870 | ||||||||||||
| 136 | - | |||||||||||||
| 137 | BIO_printf(out, "%02X:", data[i]); | - | ||||||||||||
| 138 | - | |||||||||||||
| 139 | j = (j + 1) % width; | - | ||||||||||||
| 140 | if (!j)
| 5305-121929 | ||||||||||||
| 141 | BIO_printf(out, "\n"); executed 5305 times by 1 test: BIO_printf(out, "\n");Executed by:
| 5305 | ||||||||||||
| 142 | } executed 127234 times by 1 test: end of blockExecuted by:
| 127234 | ||||||||||||
| 143 | - | |||||||||||||
| 144 | if (i && !j)
| 435-7382 | ||||||||||||
| 145 | BIO_printf(out, "%*s", indent, ""); executed 435 times by 1 test: BIO_printf(out, "%*s", indent, "");Executed by:
| 435 | ||||||||||||
| 146 | BIO_printf(out, "%02X", data[datalen - 1]); | - | ||||||||||||
| 147 | return 1; executed 11530 times by 1 test: return 1;Executed by:
| 11530 | ||||||||||||
| 148 | } | - | ||||||||||||
| Source code | Switch to Preprocessed file |