fix off-by-one errors in snprintf
authorMichael Santana <msantana@redhat.com>
Fri, 10 May 2019 14:53:12 +0000 (10:53 -0400)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 29 May 2019 11:02:53 +0000 (13:02 +0200)
snprintf guarantees to always correctly place a null terminator
in the buffer string. So manually placing a null terminator
in a buffer right after a call to snprintf is redundant code.

Additionally, there is no need to use 'sizeof(buffer) - 1' in snprintf as this
means we are not using the last character in the buffer. 'sizeof(buffer)' is
enough.

Cc: stable@dpdk.org
Signed-off-by: Michael Santana <msantana@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
drivers/net/qede/base/bcm_osal.c
drivers/net/qede/qede_filter.c
drivers/net/vdev_netvsc/vdev_netvsc.c
examples/multi_process/client_server_mp/shared/common.h
examples/server_node_efd/shared/common.h
lib/librte_eal/common/eal_common_options.c
lib/librte_eal/common/eal_filesystem.h
lib/librte_eal/common/malloc_heap.c

index 693328f..9915df4 100644 (file)
@@ -128,7 +128,7 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
        }
 
        OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
        }
 
        OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
-       snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
+       snprintf(mz_name, sizeof(mz_name), "%lx",
                                        (unsigned long)rte_get_timer_cycles());
        if (core_id == (unsigned int)LCORE_ID_ANY)
                core_id = rte_get_master_lcore();
                                        (unsigned long)rte_get_timer_cycles());
        if (core_id == (unsigned int)LCORE_ID_ANY)
                core_id = rte_get_master_lcore();
@@ -167,7 +167,7 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
        }
 
        OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
        }
 
        OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
-       snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
+       snprintf(mz_name, sizeof(mz_name), "%lx",
                                        (unsigned long)rte_get_timer_cycles());
        if (core_id == (unsigned int)LCORE_ID_ANY)
                core_id = rte_get_master_lcore();
                                        (unsigned long)rte_get_timer_cycles());
        if (core_id == (unsigned int)LCORE_ID_ANY)
                core_id = rte_get_master_lcore();
index 7bdc302..fd49858 100644 (file)
@@ -290,7 +290,7 @@ qede_config_arfs_filter(struct rte_eth_dev *eth_dev,
        /* soft_id could have been used as memzone string, but soft_id is
         * not currently used so it has no significance.
         */
        /* soft_id could have been used as memzone string, but soft_id is
         * not currently used so it has no significance.
         */
-       snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
+       snprintf(mz_name, sizeof(mz_name), "%lx",
                 (unsigned long)rte_get_timer_cycles());
        mz = rte_memzone_reserve_aligned(mz_name, QEDE_MAX_FDIR_PKT_LEN,
                                         SOCKET_ID_ANY, 0, RTE_CACHE_LINE_SIZE);
                 (unsigned long)rte_get_timer_cycles());
        mz = rte_memzone_reserve_aligned(mz_name, QEDE_MAX_FDIR_PKT_LEN,
                                         SOCKET_ID_ANY, 0, RTE_CACHE_LINE_SIZE);
index ad13eac..edab63e 100644 (file)
@@ -330,7 +330,7 @@ vdev_netvsc_sysfs_readlink(char *buf, size_t size, const char *if_name,
        char in[RTE_MAX(sizeof(ctx->yield), 256u)];
        int ret;
 
        char in[RTE_MAX(sizeof(ctx->yield), 256u)];
        int ret;
 
-       ret = snprintf(in, sizeof(in) - 1, "/sys/class/net/%s/%s",
+       ret = snprintf(in, sizeof(in), "/sys/class/net/%s/%s",
                       if_name, relpath);
        if (ret == -1 || (size_t)ret >= sizeof(in))
                return -ENOBUFS;
                       if_name, relpath);
        if (ret == -1 || (size_t)ret >= sizeof(in))
                return -ENOBUFS;
index ac91755..6dd43fc 100644 (file)
@@ -49,7 +49,7 @@ get_rx_queue_name(unsigned id)
         * by maximum 3 digits (plus an extra byte for safety) */
        static char buffer[sizeof(MP_CLIENT_RXQ_NAME) + 2];
 
         * by maximum 3 digits (plus an extra byte for safety) */
        static char buffer[sizeof(MP_CLIENT_RXQ_NAME) + 2];
 
-       snprintf(buffer, sizeof(buffer) - 1, MP_CLIENT_RXQ_NAME, id);
+       snprintf(buffer, sizeof(buffer), MP_CLIENT_RXQ_NAME, id);
        return buffer;
 }
 
        return buffer;
 }
 
index b8b533d..130fd4f 100644 (file)
@@ -61,7 +61,7 @@ get_rx_queue_name(unsigned int id)
         */
        static char buffer[sizeof(MP_NODE_RXQ_NAME) + 2];
 
         */
        static char buffer[sizeof(MP_NODE_RXQ_NAME) + 2];
 
-       snprintf(buffer, sizeof(buffer) - 1, MP_NODE_RXQ_NAME, id);
+       snprintf(buffer, sizeof(buffer), MP_NODE_RXQ_NAME, id);
        return buffer;
 }
 
        return buffer;
 }
 
index 0c91024..512d508 100644 (file)
@@ -260,8 +260,7 @@ eal_plugindir_init(const char *path)
        while ((dent = readdir(d)) != NULL) {
                struct stat sb;
 
        while ((dent = readdir(d)) != NULL) {
                struct stat sb;
 
-               snprintf(sopath, PATH_MAX-1, "%s/%s", path, dent->d_name);
-               sopath[PATH_MAX-1] = 0;
+               snprintf(sopath, sizeof(sopath), "%s/%s", path, dent->d_name);
 
                if (!(stat(sopath, &sb) == 0 && S_ISREG(sb.st_mode)))
                        continue;
 
                if (!(stat(sopath, &sb) == 0 && S_ISREG(sb.st_mode)))
                        continue;
index f2f83e7..5d21f07 100644 (file)
@@ -38,7 +38,7 @@ eal_runtime_config_path(void)
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
-       snprintf(buffer, sizeof(buffer) - 1, "%s/%s", rte_eal_get_runtime_dir(),
+       snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(),
                        RUNTIME_CONFIG_FNAME);
        return buffer;
 }
                        RUNTIME_CONFIG_FNAME);
        return buffer;
 }
@@ -50,7 +50,7 @@ eal_mp_socket_path(void)
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
-       snprintf(buffer, sizeof(buffer) - 1, "%s/%s", rte_eal_get_runtime_dir(),
+       snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(),
                        MP_SOCKET_FNAME);
        return buffer;
 }
                        MP_SOCKET_FNAME);
        return buffer;
 }
@@ -70,7 +70,7 @@ eal_hugepage_info_path(void)
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
-       snprintf(buffer, sizeof(buffer) - 1, "%s/%s", rte_eal_get_runtime_dir(),
+       snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(),
                        HUGEPAGE_INFO_FNAME);
        return buffer;
 }
                        HUGEPAGE_INFO_FNAME);
        return buffer;
 }
@@ -82,7 +82,7 @@ eal_hugepage_data_path(void)
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
 {
        static char buffer[PATH_MAX]; /* static so auto-zeroed */
 
-       snprintf(buffer, sizeof(buffer) - 1, "%s/%s", rte_eal_get_runtime_dir(),
+       snprintf(buffer, sizeof(buffer), "%s/%s", rte_eal_get_runtime_dir(),
                        HUGEPAGE_DATA_FNAME);
        return buffer;
 }
                        HUGEPAGE_DATA_FNAME);
        return buffer;
 }
@@ -94,7 +94,6 @@ eal_get_hugefile_path(char *buffer, size_t buflen, const char *hugedir, int f_id
 {
        snprintf(buffer, buflen, HUGEFILE_FMT, hugedir,
                        eal_get_hugefile_prefix(), f_id);
 {
        snprintf(buffer, buflen, HUGEFILE_FMT, hugedir,
                        eal_get_hugefile_prefix(), f_id);
-       buffer[buflen - 1] = '\0';
        return buffer;
 }
 
        return buffer;
 }
 
index c5d254d..f923593 100644 (file)
@@ -1118,7 +1118,7 @@ malloc_heap_create_external_seg(void *va_addr, rte_iova_t iova_addrs[],
                return NULL;
        }
 
                return NULL;
        }
 
-       snprintf(fbarray_name, sizeof(fbarray_name) - 1, "%s_%p",
+       snprintf(fbarray_name, sizeof(fbarray_name), "%s_%p",
                        seg_name, va_addr);
 
        /* create the backing fbarray */
                        seg_name, va_addr);
 
        /* create the backing fbarray */
@@ -1334,7 +1334,7 @@ rte_eal_malloc_heap_init(void)
                        char heap_name[RTE_HEAP_NAME_MAX_LEN];
                        int socket_id = rte_socket_id_by_idx(i);
 
                        char heap_name[RTE_HEAP_NAME_MAX_LEN];
                        int socket_id = rte_socket_id_by_idx(i);
 
-                       snprintf(heap_name, sizeof(heap_name) - 1,
+                       snprintf(heap_name, sizeof(heap_name),
                                        "socket_%i", socket_id);
                        strlcpy(heap->name, heap_name, RTE_HEAP_NAME_MAX_LEN);
                        heap->socket_id = socket_id;
                                        "socket_%i", socket_id);
                        strlcpy(heap->name, heap_name, RTE_HEAP_NAME_MAX_LEN);
                        heap->socket_id = socket_id;