From 69edccc0634ddc3a861e90186b7571a5a52d0bec Mon Sep 17 00:00:00 2001 From: Yuan Liu Date: Wed, 26 Sep 2018 11:24:19 +0800 Subject: [PATCH] IOC Mediator: Add return value check for snprintf Return value check for snprintf function. Tracked-On: #1401 Signed-off-by: Yuan Liu Reviewed-by: Shuo Liu Acked-by: Yu Wang --- devicemodel/hw/platform/ioc.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/devicemodel/hw/platform/ioc.c b/devicemodel/hw/platform/ioc.c index e336f4041..6ef55294c 100644 --- a/devicemodel/hw/platform/ioc.c +++ b/devicemodel/hw/platform/ioc.c @@ -1550,9 +1550,13 @@ ioc_parse(const char *opts) { char *tmp; char *param = strdup(opts); + int rc; tmp = strtok(param, ","); - snprintf(virtual_uart_path, sizeof(virtual_uart_path), "%s", param); + rc = snprintf(virtual_uart_path, sizeof(virtual_uart_path), "%s", param); + if (rc < 0 || rc >= sizeof(virtual_uart_path)) + WPRINTF("ioc gets incomplete virtual uart path:%s\r\n", + virtual_uart_path); if (tmp != NULL) { tmp = strtok(NULL, ","); if (tmp != NULL) { @@ -1575,6 +1579,7 @@ int ioc_init(struct vmctx *ctx) { int i; + int rc; struct ioc_dev *ioc; IOC_LOG_INIT; @@ -1668,7 +1673,10 @@ ioc_init(struct vmctx *ctx) ARRAY_SIZE(wlist_tx_group_table)); /* Setup IOC rx members */ - snprintf(ioc->rx_name, sizeof(ioc->rx_name), "ioc_rx"); + rc = snprintf(ioc->rx_name, sizeof(ioc->rx_name), "ioc_rx"); + if (rc < 0) + WPRINTF("%s", "ioc fails to set ioc_rx thread name\r\n"); + ioc->ioc_dev_rx = cbc_rx_handler; pthread_cond_init(&ioc->rx_cond, NULL); pthread_mutex_init(&ioc->rx_mtx, NULL); @@ -1683,7 +1691,10 @@ ioc_init(struct vmctx *ctx) ioc->rx_config.wlist_grp_tbl = wlist_rx_group_table; /* Setup IOC tx members */ - snprintf(ioc->tx_name, sizeof(ioc->tx_name), "ioc_tx"); + rc = snprintf(ioc->tx_name, sizeof(ioc->tx_name), "ioc_tx"); + if (rc < 0) + WPRINTF("%s", "ioc fails to set ioc_tx thread name\r\n"); + ioc->ioc_dev_tx = cbc_tx_handler; pthread_cond_init(&ioc->tx_cond, NULL); pthread_mutex_init(&ioc->tx_mtx, NULL); @@ -1710,7 +1721,10 @@ ioc_init(struct vmctx *ctx) if (ioc_create_thread(ioc->tx_name, &ioc->tx_tid, ioc_tx_thread, (void *)ioc) < 0) goto work_err; - snprintf(ioc->name, sizeof(ioc->name), "ioc_core"); + rc = snprintf(ioc->name, sizeof(ioc->name), "ioc_core"); + if (rc < 0) + WPRINTF("%s", "ioc fails to set ioc_core thread name\r\n"); + if (ioc_create_thread(ioc->name, &ioc->tid, ioc_core_thread, (void *)ioc) < 0) goto work_err;