send debug msg if contains '\n'
Signed-off-by: valord577 <valord577@gmail.com>
diff --git a/library/debug.c b/library/debug.c
index eecde10..839ceba 100644
--- a/library/debug.c
+++ b/library/debug.c
@@ -68,6 +68,7 @@
va_list argp;
char str[DEBUG_BUF_SIZE];
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
+ int newline = -1;
if (NULL == ssl ||
NULL == ssl->conf ||
@@ -80,16 +81,26 @@
ret = mbedtls_vsnprintf(str, DEBUG_BUF_SIZE, format, argp);
va_end(argp);
- if (ret >= 0 && ret < DEBUG_BUF_SIZE - 1) {
- str[ret] = '\n';
- str[ret + 1] = '\0';
- }
- else
- {
- str[DEBUG_BUF_SIZE - 2] = '\n';
+ if (DEBUG_BUF_SIZE >= 2) {
+ if (ret < 0) {
+ newline = 0;
+ } else {
+ newline = ret;
+ if (ret >= DEBUG_BUF_SIZE - 1) {
+ newline = DEBUG_BUF_SIZE - 2;
+ }
+ }
}
- debug_send_line(ssl, level, file, line, str);
+ /*
+ * Send if str contains '\n'.
+ */
+ if (newline >= 0) {
+ str[newline] = '\n';
+ str[newline + 1] = '\0';
+
+ debug_send_line(ssl, level, file, line, str);
+ }
}
void mbedtls_debug_print_ret(const mbedtls_ssl_context *ssl, int level,