forked from wolfSSL/wolfssl
Improvements to WOLFSSL_BUFFER
function to eliminate recursive call and use snprintf
for string safety. Adds support for build-time change of LINE_LEN
.
This commit is contained in:
@ -277,41 +277,52 @@ void WOLFSSL_MSG(const char* msg)
|
|||||||
wolfssl_log(INFO_LOG , msg);
|
wolfssl_log(INFO_LOG , msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef LINE_LEN
|
||||||
|
#define LINE_LEN 16
|
||||||
|
#endif
|
||||||
void WOLFSSL_BUFFER(const byte* buffer, word32 length)
|
void WOLFSSL_BUFFER(const byte* buffer, word32 length)
|
||||||
{
|
{
|
||||||
#define LINE_LEN 16
|
int i, buflen = (int)length, bufidx;
|
||||||
|
char line[(LINE_LEN * 4) + 3]; /* \t00..0F | chars...chars\0 */
|
||||||
|
|
||||||
if (loggingEnabled) {
|
if (!loggingEnabled) {
|
||||||
word32 i;
|
return;
|
||||||
char line[80];
|
}
|
||||||
|
|
||||||
if (!buffer) {
|
if (!buffer) {
|
||||||
wolfssl_log(INFO_LOG, "\tNULL");
|
wolfssl_log(INFO_LOG, "\tNULL");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
while (buflen > 0) {
|
||||||
}
|
bufidx = 0;
|
||||||
|
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx, "\t");
|
||||||
sprintf(line, "\t");
|
bufidx++;
|
||||||
|
|
||||||
for (i = 0; i < LINE_LEN; i++) {
|
for (i = 0; i < LINE_LEN; i++) {
|
||||||
if (i < length)
|
if (i < buflen) {
|
||||||
sprintf(line + 1 + i * 3,"%02x ", buffer[i]);
|
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx, "%02x ", buffer[i]);
|
||||||
else
|
}
|
||||||
sprintf(line + 1 + i * 3, " ");
|
else {
|
||||||
|
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx, " ");
|
||||||
|
}
|
||||||
|
bufidx += 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(line + 1 + LINE_LEN * 3, "| ");
|
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx, "| ");
|
||||||
|
bufidx++;
|
||||||
|
|
||||||
for (i = 0; i < LINE_LEN; i++)
|
for (i = 0; i < LINE_LEN; i++) {
|
||||||
if (i < length)
|
if (i < buflen) {
|
||||||
sprintf(line + 3 + LINE_LEN * 3 + i,
|
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx,
|
||||||
"%c", 31 < buffer[i] && buffer[i] < 127 ? buffer[i] : '.');
|
"%c", 31 < buffer[i] && buffer[i] < 127 ? buffer[i] : '.');
|
||||||
|
bufidx++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
wolfssl_log(INFO_LOG, line);
|
wolfssl_log(INFO_LOG, line);
|
||||||
|
buffer += LINE_LEN;
|
||||||
if (length > LINE_LEN)
|
buflen -= LINE_LEN;
|
||||||
WOLFSSL_BUFFER(buffer + LINE_LEN, length - LINE_LEN);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user