mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-29 18:27:29 +02:00
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);
|
||||
}
|
||||
|
||||
|
||||
#ifndef LINE_LEN
|
||||
#define LINE_LEN 16
|
||||
#endif
|
||||
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) {
|
||||
word32 i;
|
||||
char line[80];
|
||||
if (!loggingEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!buffer) {
|
||||
wolfssl_log(INFO_LOG, "\tNULL");
|
||||
if (!buffer) {
|
||||
wolfssl_log(INFO_LOG, "\tNULL");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(line, "\t");
|
||||
while (buflen > 0) {
|
||||
bufidx = 0;
|
||||
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx, "\t");
|
||||
bufidx++;
|
||||
|
||||
for (i = 0; i < LINE_LEN; i++) {
|
||||
if (i < length)
|
||||
sprintf(line + 1 + i * 3,"%02x ", buffer[i]);
|
||||
else
|
||||
sprintf(line + 1 + i * 3, " ");
|
||||
if (i < buflen) {
|
||||
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx, "%02x ", buffer[i]);
|
||||
}
|
||||
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++)
|
||||
if (i < length)
|
||||
sprintf(line + 3 + LINE_LEN * 3 + i,
|
||||
for (i = 0; i < LINE_LEN; i++) {
|
||||
if (i < buflen) {
|
||||
XSNPRINTF(&line[bufidx], sizeof(line)-bufidx,
|
||||
"%c", 31 < buffer[i] && buffer[i] < 127 ? buffer[i] : '.');
|
||||
bufidx++;
|
||||
}
|
||||
}
|
||||
|
||||
wolfssl_log(INFO_LOG, line);
|
||||
|
||||
if (length > LINE_LEN)
|
||||
WOLFSSL_BUFFER(buffer + LINE_LEN, length - LINE_LEN);
|
||||
buffer += LINE_LEN;
|
||||
buflen -= LINE_LEN;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user