drivers: fix sprintf with snprintf
authorPallantla Poornima <pallantlax.poornima@intel.com>
Mon, 7 Jan 2019 10:46:23 +0000 (10:46 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 14 Jan 2019 22:27:27 +0000 (23:27 +0100)
sprintf function is not secure as it doesn't check the length of string.
More secure function snprintf is used

Fixes: 828d51d8fc ("bus/fslmc: refactor scan and probe functions")
Fixes: c22fab9a6c ("raw/dpaa2_qdma: support configuration APIs")
Fixes: e5cbdfc537 ("crypto/dpaa2_sec: add basic operations")
Fixes: b23d4e898a ("crypto/dpaa2_sec: add per dev mempool to store FLE")
Fixes: 623326dded ("crypto/dpaa2_sec: introduce poll mode driver")
Fixes: e7a45f3cc2 ("crypto/caam_jr: add UIO specific operations")
Fixes: f44bccadd8 ("crypto/caam_jr: add device basic operations")
Fixes: 7e3e2954e0 ("crypto/dpaa_sec: move mempool allocation to config")
Fixes: c3e85bdcc6 ("crypto/dpaa_sec: add crypto driver for NXP DPAA platform")
Cc: stable@dpdk.org
Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
drivers/bus/fslmc/fslmc_bus.c
drivers/crypto/caam_jr/caam_jr.c
drivers/crypto/caam_jr/caam_jr_uio.c
drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
drivers/crypto/dpaa_sec/dpaa_sec.c
drivers/raw/dpaa2_qdma/dpaa2_qdma.c

index fa15053..44c0827 100644 (file)
@@ -297,8 +297,8 @@ rte_fslmc_scan(void)
                goto scan_fail;
 
        /* Scan devices on the group */
-       sprintf(fslmc_dirpath, "%s/%d/devices", VFIO_IOMMU_GROUP_PATH,
-               groupid);
+       snprintf(fslmc_dirpath, sizeof(fslmc_dirpath), "%s/%d/devices",
+                       VFIO_IOMMU_GROUP_PATH, groupid);
        dir = opendir(fslmc_dirpath);
        if (!dir) {
                DPAA2_BUS_ERR("Unable to open VFIO group directory");
index 45b2813..0263170 100644 (file)
@@ -2011,7 +2011,7 @@ caam_jr_dev_configure(struct rte_cryptodev *dev,
        PMD_INIT_FUNC_TRACE();
 
        internals = dev->data->dev_private;
-       sprintf(str, "ctx_pool_%d", dev->data->dev_id);
+       snprintf(str, sizeof(str), "ctx_pool_%d", dev->data->dev_id);
        if (!internals->ctx_pool) {
                internals->ctx_pool = rte_mempool_create((const char *)str,
                                                CTX_POOL_NUM_BUFS,
index d94101c..bf872a2 100644 (file)
@@ -284,11 +284,11 @@ uio_map_registers(int uio_device_fd, int uio_device_id,
        memset(uio_map_size_str, 0, sizeof(uio_map_size_str));
 
        /* Compose string: /sys/class/uio/uioX */
-       sprintf(uio_sys_root, "%s/%s%d", SEC_UIO_DEVICE_SYS_ATTR_PATH,
-               "uio", uio_device_id);
+       snprintf(uio_sys_root, sizeof(uio_sys_root), "%s/%s%d",
+                       SEC_UIO_DEVICE_SYS_ATTR_PATH, "uio", uio_device_id);
        /* Compose string: maps/mapY */
-       sprintf(uio_sys_map_subdir, "%s%d", SEC_UIO_DEVICE_SYS_MAP_ATTR,
-               uio_map_id);
+       snprintf(uio_sys_map_subdir, sizeof(uio_sys_map_subdir), "%s%d",
+                       SEC_UIO_DEVICE_SYS_MAP_ATTR, uio_map_id);
 
        /* Read first (and only) line from file
         * /sys/class/uio/uioX/maps/mapY/size
@@ -389,9 +389,8 @@ uio_job_ring *config_job_ring(void)
 
        /* Find UIO device created by SEC kernel driver for this job ring. */
        memset(uio_device_file_name, 0, sizeof(uio_device_file_name));
-
-       sprintf(uio_device_file_name, "%s%d", SEC_UIO_DEVICE_FILE_NAME,
-               job_ring->uio_minor_number);
+       snprintf(uio_device_file_name, sizeof(uio_device_file_name), "%s%d",
+                       SEC_UIO_DEVICE_FILE_NAME, job_ring->uio_minor_number);
 
        /* Open device file */
        job_ring->uio_fd = open(uio_device_file_name, O_RDWR);
index ef6e9c1..c2c2251 100644 (file)
@@ -3371,14 +3371,15 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev)
                             retcode);
                goto init_error;
        }
-       sprintf(cryptodev->data->name, "dpsec-%u", hw_id);
+       snprintf(cryptodev->data->name, sizeof(cryptodev->data->name),
+                       "dpsec-%u", hw_id);
 
        internals->max_nb_queue_pairs = attr.num_tx_queues;
        cryptodev->data->nb_queue_pairs = internals->max_nb_queue_pairs;
        internals->hw = dpseci;
        internals->token = token;
 
-       sprintf(str, "fle_pool_%d", cryptodev->data->dev_id);
+       snprintf(str, sizeof(str), "fle_pool_%d", cryptodev->data->dev_id);
        internals->fle_pool = rte_mempool_create((const char *)str,
                        FLE_POOL_NUM_BUFS,
                        FLE_POOL_BUF_SIZE,
@@ -3409,7 +3410,8 @@ cryptodev_dpaa2_sec_probe(struct rte_dpaa2_driver *dpaa2_drv __rte_unused,
 
        int retval;
 
-       sprintf(cryptodev_name, "dpsec-%d", dpaa2_dev->object_id);
+       snprintf(cryptodev_name, sizeof(cryptodev_name), "dpsec-%d",
+                       dpaa2_dev->object_id);
 
        cryptodev = rte_cryptodev_pmd_allocate(cryptodev_name, rte_socket_id());
        if (cryptodev == NULL)
index 5caceef..39533a9 100644 (file)
@@ -2469,7 +2469,7 @@ dpaa_sec_dev_configure(struct rte_cryptodev *dev,
        PMD_INIT_FUNC_TRACE();
 
        internals = dev->data->dev_private;
-       sprintf(str, "ctx_pool_%d", dev->data->dev_id);
+       snprintf(str, sizeof(str), "ctx_pool_%d", dev->data->dev_id);
        if (!internals->ctx_pool) {
                internals->ctx_pool = rte_mempool_create((const char *)str,
                                                        CTX_POOL_NUM_BUFS,
@@ -2675,7 +2675,8 @@ cryptodev_dpaa_sec_probe(struct rte_dpaa_driver *dpaa_drv __rte_unused,
 
        int retval;
 
-       sprintf(cryptodev_name, "dpaa_sec-%d", dpaa_dev->id.dev_id);
+       snprintf(cryptodev_name, sizeof(cryptodev_name), "dpaa_sec-%d",
+                       dpaa_dev->id.dev_id);
 
        cryptodev = rte_cryptodev_pmd_allocate(cryptodev_name, rte_socket_id());
        if (cryptodev == NULL)
index f474442..60621eb 100644 (file)
@@ -313,7 +313,7 @@ rte_qdma_vq_create(uint32_t lcore_id, uint32_t flags)
                qdma_vqs[i].exclusive_hw_queue = 1;
        } else {
                /* Allocate a Ring for Virutal Queue in VQ mode */
-               sprintf(ring_name, "status ring %d", i);
+               snprintf(ring_name, sizeof(ring_name), "status ring %d", i);
                qdma_vqs[i].status_ring = rte_ring_create(ring_name,
                        qdma_dev.fle_pool_count, rte_socket_id(), 0);
                if (!qdma_vqs[i].status_ring) {