From c0c16643125f55ab8b0594ef001a413d66907598 Mon Sep 17 00:00:00 2001 From: baoguotao Date: Mon, 11 Apr 2022 09:05:13 +0800 Subject: [PATCH] fix: Optimization function deal_format nesting too deep Signed-off-by: baoguotao --- osal/src/osal_deal_log_format.c | 45 +++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/osal/src/osal_deal_log_format.c b/osal/src/osal_deal_log_format.c index 8c7b401..7036bae 100644 --- a/osal/src/osal_deal_log_format.c +++ b/osal/src/osal_deal_log_format.c @@ -20,10 +20,10 @@ #include "securec.h" #define NUMBER 2 -static const char *g_property[NUMBER] = {"%{private}", "%{public}"}; -static size_t g_property_len[NUMBER] = {10, 9}; +static const char *g_property[NUMBER] = { "%{private}", "%{public}" }; +static size_t g_property_len[NUMBER] = { 10, 9 }; -/* remove "{private}" and "{public}" from fmt and copy to dest */ +/* remove "{private}" and "{public}" from fmt and copy the rest to dest */ bool deal_format(const char *fmt, char *dest, size_t size) { const char *ptr = fmt; @@ -38,26 +38,27 @@ bool deal_format(const char *fmt, char *dest, size_t size) } while (ptr_cur != NULL && *ptr_cur != '\0') { - if (*ptr_cur == '%') { - for (i = 0; i < NUMBER; i++) { - if (strncmp(ptr_cur, g_property[i], g_property_len[i]) == 0) { - /* add 1 is for to copy char '%' */ - ret = strncpy_s(&dest[index], size - index, ptr, ptr_cur - ptr + 1); - if (ret != EOK) { - printk("%s strncpy_s error %d", __func__, ret); - return false; - } - index += (ptr_cur - ptr + 1); - ptr = ptr_cur + g_property_len[i]; - ptr_cur = ptr; - break; - } - } - if (i == NUMBER) - ptr_cur++; - } else { + if (*ptr_cur != '%') { ptr_cur++; + continue; } + for (i = 0; i < NUMBER; i++) { + if (strncmp(ptr_cur, g_property[i], g_property_len[i]) != 0) + continue; + + /* add 1 is for to copy char '%' */ + ret = strncpy_s(&dest[index], size - index, ptr, ptr_cur - ptr + 1); + if (ret != EOK) { + printk("%s strncpy_s error %d", __func__, ret); + return false; + } + index += (ptr_cur - ptr + 1); + ptr = ptr_cur + g_property_len[i]; + ptr_cur = ptr; + break; + } + if (i == NUMBER) + ptr_cur++; } ret = strcat_s(&dest[index], size - index, ptr); if (ret != EOK) { @@ -66,4 +67,4 @@ bool deal_format(const char *fmt, char *dest, size_t size) } return true; } -EXPORT_SYMBOL(deal_format); \ No newline at end of file +EXPORT_SYMBOL(deal_format); -- Gitee