get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/52203/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 52203,
    "url": "http://patches.dpdk.org/api/patches/52203/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190403144505.46234-6-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20190403144505.46234-6-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190403144505.46234-6-bruce.richardson@intel.com",
    "date": "2019-04-03T14:45:05",
    "name": "[5/5] replace snprintf with strlcpy",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "e0d3cc5edf1c8cb26fab7c07056529c80a90f815",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20190403144505.46234-6-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 4091,
            "url": "http://patches.dpdk.org/api/series/4091/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4091",
            "date": "2019-04-03T14:45:00",
            "name": "clean up snprintf use for string copying",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/4091/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/52203/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/52203/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 4AC9F1B491;\n\tWed,  3 Apr 2019 16:45:43 +0200 (CEST)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id D8BF71B488\n\tfor <dev@dpdk.org>; Wed,  3 Apr 2019 16:45:38 +0200 (CEST)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n\tby orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 Apr 2019 07:45:37 -0700",
            "from silpixa00399126.ir.intel.com (HELO\n\tsilpixa00399126.ger.corp.intel.com) ([10.237.222.236])\n\tby orsmga005.jf.intel.com with ESMTP; 03 Apr 2019 07:45:36 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.60,304,1549958400\"; d=\"scan'208\";a=\"312832771\"",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Bruce Richardson <bruce.richardson@intel.com>",
        "Date": "Wed,  3 Apr 2019 15:45:05 +0100",
        "Message-Id": "<20190403144505.46234-6-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20190403144505.46234-1-bruce.richardson@intel.com>",
        "References": "<20190403144505.46234-1-bruce.richardson@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH 5/5] replace snprintf with strlcpy",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Do a global replace of snprintf(...\"%s\",...) with strlcpy, adding in the\nrte_string_fns.h header if needed.  The function changes in this patch were\nauto-generated via command:\n\n  spatch --sp-file devtools/cocci/strlcpy.cocci --dir . --in-place\n\nand then the files edited using awk to add in the missing header:\n\n  gawk -i inplace '/include <rte_/ && ! seen { \\\n  \tprint \"#include <rte_string_fns.h>\"; seen=1} {print}'\n\nSigned-off-by: Bruce Richardson <bruce.richardson@intel.com>\n---\n app/test-acl/main.c                           |  3 +-\n app/test-eventdev/evt_options.c               |  3 +-\n app/test-pmd/cmdline_flow.c                   | 13 +++----\n app/test/test_table_acl.c                     | 11 +++---\n drivers/bus/dpaa/base/fman/of.c               |  7 ++--\n drivers/bus/pci/linux/pci_uio.c               |  3 +-\n .../crypto/aesni_mb/rte_aesni_mb_pmd_ops.c    |  3 +-\n .../aesni_mb/rte_aesni_mb_pmd_ops_compat.c    |  3 +-\n drivers/crypto/ccp/rte_ccp_pmd.c              |  6 ++--\n .../scheduler/rte_cryptodev_scheduler.c       |  8 ++---\n drivers/event/opdl/opdl_ring.c                |  3 +-\n drivers/net/af_packet/rte_eth_af_packet.c     |  5 +--\n drivers/net/ark/ark_pktchkr.c                 |  3 +-\n drivers/net/ark/ark_pktgen.c                  |  3 +-\n drivers/net/atlantic/atl_ethdev.c             |  5 +--\n drivers/net/bnx2x/bnx2x_ethdev.c              |  8 ++---\n drivers/net/bnxt/bnxt_stats.c                 | 36 +++++++++----------\n drivers/net/dpaa/dpaa_ethdev.c                |  8 ++---\n drivers/net/e1000/igb_ethdev.c                | 17 ++++-----\n drivers/net/ena/ena_ethdev.c                  | 11 +++---\n drivers/net/failsafe/failsafe_eal.c           |  6 ++--\n drivers/net/i40e/rte_pmd_i40e.c               |  5 +--\n drivers/net/ice/ice_ethdev.c                  | 11 +++---\n drivers/net/ixgbe/ixgbe_ethdev.c              | 35 +++++++++---------\n drivers/net/kni/rte_eth_kni.c                 |  3 +-\n drivers/net/liquidio/lio_ethdev.c             |  5 +--\n drivers/net/mvneta/mvneta_ethdev.c            |  3 +-\n drivers/net/mvpp2/mrvl_ethdev.c               |  5 +--\n drivers/net/qede/qede_ethdev.c                | 22 ++++++------\n drivers/net/virtio/virtio_user/vhost_user.c   |  3 +-\n .../net/virtio/virtio_user/virtio_user_dev.c  |  3 +-\n examples/ethtool/lib/rte_ethtool.c            |  8 ++---\n examples/l2fwd-crypto/main.c                  |  4 +--\n examples/vm_power_manager/channel_manager.c   |  7 ++--\n examples/vm_power_manager/channel_monitor.c   | 14 ++++----\n lib/librte_acl/rte_acl.c                      |  3 +-\n lib/librte_bbdev/rte_bbdev.c                  |  3 +-\n lib/librte_cfgfile/rte_cfgfile.c              | 22 ++++++------\n lib/librte_compressdev/rte_compressdev.c      |  5 +--\n lib/librte_compressdev/rte_compressdev_pmd.c  |  3 +-\n lib/librte_cryptodev/rte_cryptodev_pmd.c      |  3 +-\n lib/librte_eal/common/eal_common_options.c    |  3 +-\n lib/librte_efd/rte_efd.c                      |  3 +-\n lib/librte_eventdev/rte_eventdev.c            |  4 +--\n lib/librte_flow_classify/rte_flow_classify.c  |  4 +--\n lib/librte_jobstats/rte_jobstats.c            |  3 +-\n lib/librte_latencystats/rte_latencystats.c    |  5 +--\n lib/librte_member/rte_member.c                |  3 +-\n lib/librte_mempool/rte_mempool_ops.c          |  3 +-\n lib/librte_power/power_acpi_cpufreq.c         |  3 +-\n lib/librte_power/power_pstate_cpufreq.c       |  3 +-\n lib/librte_rawdev/rte_rawdev.c                |  3 +-\n lib/librte_reorder/rte_reorder.c              |  5 +--\n 53 files changed, 201 insertions(+), 173 deletions(-)",
    "diff": "diff --git a/app/test-acl/main.c b/app/test-acl/main.c\nindex 648525af5..b80179417 100644\n--- a/app/test-acl/main.c\n+++ b/app/test-acl/main.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2010-2014 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_acl.h>\n #include <getopt.h>\n #include <string.h>\n@@ -928,7 +929,7 @@ print_usage(const char *prgname)\n \t\tn += rc;\n \t}\n \n-\tsnprintf(buf + n, sizeof(buf) - n, \"%s\", acl_alg[i].name);\n+\tstrlcpy(buf + n, acl_alg[i].name, sizeof(buf) - n);\n \n \tfprintf(stdout,\n \t\tPRINT_USAGE_START\ndiff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c\nindex cfa43a165..cb95a32b8 100644\n--- a/app/test-eventdev/evt_options.c\n+++ b/app/test-eventdev/evt_options.c\n@@ -7,6 +7,7 @@\n #include <inttypes.h>\n #include <getopt.h>\n \n+#include <rte_string_fns.h>\n #include <rte_common.h>\n #include <rte_eventdev.h>\n #include <rte_lcore.h>\n@@ -110,7 +111,7 @@ evt_parse_timer_prod_type_burst(struct evt_options *opt,\n static int\n evt_parse_test_name(struct evt_options *opt, const char *arg)\n {\n-\tsnprintf(opt->test_name, EVT_TEST_NAME_MAX_LEN, \"%s\", arg);\n+\tstrlcpy(opt->test_name, arg, EVT_TEST_NAME_MAX_LEN);\n \treturn 0;\n }\n \ndiff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c\nindex 36659a64a..1c83bc9bc 100644\n--- a/app/test-pmd/cmdline_flow.c\n+++ b/app/test-pmd/cmdline_flow.c\n@@ -13,6 +13,7 @@\n #include <arpa/inet.h>\n #include <sys/socket.h>\n \n+#include <rte_string_fns.h>\n #include <rte_common.h>\n #include <rte_eth_ctrl.h>\n #include <rte_ethdev.h>\n@@ -4694,7 +4695,7 @@ comp_boolean(struct context *ctx, const struct token *token,\n \t(void)token;\n \tfor (i = 0; boolean_name[i]; ++i)\n \t\tif (buf && i == ent)\n-\t\t\treturn snprintf(buf, size, \"%s\", boolean_name[i]);\n+\t\t\treturn strlcpy(buf, boolean_name[i], size);\n \tif (buf)\n \t\treturn -1;\n \treturn i;\n@@ -4711,8 +4712,8 @@ comp_action(struct context *ctx, const struct token *token,\n \t(void)token;\n \tfor (i = 0; next_action[i]; ++i)\n \t\tif (buf && i == ent)\n-\t\t\treturn snprintf(buf, size, \"%s\",\n-\t\t\t\t\ttoken_list[next_action[i]].name);\n+\t\t\treturn strlcpy(buf, token_list[next_action[i]].name,\n+\t\t\t\t       size);\n \tif (buf)\n \t\treturn -1;\n \treturn i;\n@@ -4776,7 +4777,7 @@ comp_vc_action_rss_type(struct context *ctx, const struct token *token,\n \tif (!buf)\n \t\treturn i + 1;\n \tif (ent < i)\n-\t\treturn snprintf(buf, size, \"%s\", rss_type_table[ent].str);\n+\t\treturn strlcpy(buf, rss_type_table[ent].str, size);\n \tif (ent == i)\n \t\treturn snprintf(buf, size, \"end\");\n \treturn -1;\n@@ -4961,7 +4962,7 @@ cmd_flow_complete_get_elt(cmdline_parse_token_hdr_t *hdr, int index,\n \tif (index >= i)\n \t\treturn -1;\n \ttoken = &token_list[list[index]];\n-\tsnprintf(dst, size, \"%s\", token->name);\n+\tstrlcpy(dst, token->name, size);\n \t/* Save index for cmd_flow_get_help(). */\n \tctx->prev = list[index];\n \treturn 0;\n@@ -4978,7 +4979,7 @@ cmd_flow_get_help(cmdline_parse_token_hdr_t *hdr, char *dst, unsigned int size)\n \tif (!size)\n \t\treturn -1;\n \t/* Set token type and update global help with details. */\n-\tsnprintf(dst, size, \"%s\", (token->type ? token->type : \"TOKEN\"));\n+\tstrlcpy(dst, (token->type ? token->type : \"TOKEN\"), size);\n \tif (token->help)\n \t\tcmd_flow.help_str = token->help;\n \telse\ndiff --git a/app/test/test_table_acl.c b/app/test/test_table_acl.c\nindex 33e2f6ee6..22136a396 100644\n--- a/app/test/test_table_acl.c\n+++ b/app/test/test_table_acl.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2010-2014 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_hexdump.h>\n #include \"test_table.h\"\n #include \"test_table_acl.h\"\n@@ -467,7 +468,7 @@ setup_acl_pipeline(void)\n \t\t\tmemset(&keys[n], 0, sizeof(struct rte_table_acl_rule_add_params));\n \t\t\tkey_array[n] = &keys[n];\n \n-\t\t\tsnprintf(line, sizeof(line), \"%s\", lines[n]);\n+\t\t\tstrlcpy(line, lines[n], sizeof(line));\n \t\t\tprintf(\"PARSING [%s]\\n\", line);\n \n \t\t\tret = parser(line, &keys[n]);\n@@ -509,7 +510,7 @@ setup_acl_pipeline(void)\n \t\t\tmemset(&keys[n], 0, sizeof(struct rte_table_acl_rule_delete_params));\n \t\t\tkey_array[n] = &keys[n];\n \n-\t\t\tsnprintf(line, sizeof(line), \"%s\", lines[n]);\n+\t\t\tstrlcpy(line, lines[n], sizeof(line));\n \t\t\tprintf(\"PARSING [%s]\\n\", line);\n \n \t\t\tret = parse_cb_ipv4_rule_del(line, &keys[n]);\n@@ -545,7 +546,7 @@ setup_acl_pipeline(void)\n \t\tparser = parse_cb_ipv4_rule;\n \n \t\tfor (n = 1; n <= 5; n++) {\n-\t\t\tsnprintf(line, sizeof(line), \"%s\", lines[n-1]);\n+\t\t\tstrlcpy(line, lines[n - 1], sizeof(line));\n \t\t\tprintf(\"PARSING [%s]\\n\", line);\n \n \t\t\tret = parser(line, &rule_params);\n@@ -571,7 +572,7 @@ setup_acl_pipeline(void)\n \n \t\t/* delete a few rules */\n \t\tfor (n = 2; n <= 3; n++) {\n-\t\t\tsnprintf(line, sizeof(line), \"%s\", lines[n-1]);\n+\t\t\tstrlcpy(line, lines[n - 1], sizeof(line));\n \t\t\tprintf(\"PARSING [%s]\\n\", line);\n \n \t\t\tret = parser(line, &rule_params);\n@@ -598,7 +599,7 @@ setup_acl_pipeline(void)\n \n \t\t/* Try to add duplicates */\n \t\tfor (n = 1; n <= 5; n++) {\n-\t\t\tsnprintf(line, sizeof(line), \"%s\", lines[n-1]);\n+\t\t\tstrlcpy(line, lines[n - 1], sizeof(line));\n \t\t\tprintf(\"PARSING [%s]\\n\", line);\n \n \t\t\tret = parser(line, &rule_params);\ndiff --git a/drivers/bus/dpaa/base/fman/of.c b/drivers/bus/dpaa/base/fman/of.c\nindex a7f3174e4..1e97be54e 100644\n--- a/drivers/bus/dpaa/base/fman/of.c\n+++ b/drivers/bus/dpaa/base/fman/of.c\n@@ -6,6 +6,7 @@\n  */\n \n #include <of.h>\n+#include <rte_string_fns.h>\n #include <rte_dpaa_logs.h>\n \n static int alive;\n@@ -60,7 +61,7 @@ process_file(struct dirent *dent, struct dt_dir *parent)\n \t\treturn;\n \t}\n \tf->node.is_file = 1;\n-\tsnprintf(f->node.node.name, NAME_MAX, \"%s\", dent->d_name);\n+\tstrlcpy(f->node.node.name, dent->d_name, NAME_MAX);\n \tsnprintf(f->node.node.full_name, PATH_MAX, \"%s/%s\",\n \t\t parent->node.node.full_name, dent->d_name);\n \tf->parent = parent;\n@@ -117,8 +118,8 @@ iterate_dir(struct dirent **d, int num, struct dt_dir *dt)\n \t\t\t\tperror(\"malloc\");\n \t\t\t\treturn -ENOMEM;\n \t\t\t}\n-\t\t\tsnprintf(subdir->node.node.name, NAME_MAX, \"%s\",\n-\t\t\t\t d[loop]->d_name);\n+\t\t\tstrlcpy(subdir->node.node.name, d[loop]->d_name,\n+\t\t\t\tNAME_MAX);\n \t\t\tsnprintf(subdir->node.node.full_name, PATH_MAX,\n \t\t\t\t \"%s/%s\", dt->node.node.full_name,\n \t\t\t\t d[loop]->d_name);\ndiff --git a/drivers/bus/pci/linux/pci_uio.c b/drivers/bus/pci/linux/pci_uio.c\nindex 09ecbb7aa..65f4896b9 100644\n--- a/drivers/bus/pci/linux/pci_uio.c\n+++ b/drivers/bus/pci/linux/pci_uio.c\n@@ -16,6 +16,7 @@\n #include <sys/io.h>\n #endif\n \n+#include <rte_string_fns.h>\n #include <rte_log.h>\n #include <rte_pci.h>\n #include <rte_bus_pci.h>\n@@ -268,7 +269,7 @@ pci_uio_alloc_resource(struct rte_pci_device *dev,\n \t\tgoto error;\n \t}\n \n-\tsnprintf((*uio_res)->path, sizeof((*uio_res)->path), \"%s\", devname);\n+\tstrlcpy((*uio_res)->path, devname, sizeof((*uio_res)->path));\n \tmemcpy(&(*uio_res)->pci_addr, &dev->addr, sizeof((*uio_res)->pci_addr));\n \n \treturn 0;\ndiff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c\nindex 3a8374ef3..8d15b99d4 100644\n--- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c\n+++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c\n@@ -4,6 +4,7 @@\n \n #include <string.h>\n \n+#include <rte_string_fns.h>\n #include <rte_common.h>\n #include <rte_malloc.h>\n #include <rte_cryptodev_pmd.h>\n@@ -614,7 +615,7 @@ aesni_mb_pmd_qp_create_processed_ops_ring(struct aesni_mb_qp *qp,\n \tstruct rte_ring *r;\n \tchar ring_name[RTE_CRYPTODEV_NAME_MAX_LEN];\n \n-\tunsigned int n = snprintf(ring_name, sizeof(ring_name), \"%s\", qp->name);\n+\tunsigned int n = strlcpy(ring_name, qp->name, sizeof(ring_name));\n \n \tif (n >= sizeof(ring_name))\n \t\treturn NULL;\ndiff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops_compat.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops_compat.c\nindex 79a38b25e..379a0c003 100644\n--- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops_compat.c\n+++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops_compat.c\n@@ -4,6 +4,7 @@\n \n #include <string.h>\n \n+#include <rte_string_fns.h>\n #include <rte_common.h>\n #include <rte_malloc.h>\n #include <rte_cryptodev_pmd.h>\n@@ -565,7 +566,7 @@ aesni_mb_pmd_qp_create_processed_ops_ring(struct aesni_mb_qp *qp,\n \tstruct rte_ring *r;\n \tchar ring_name[RTE_CRYPTODEV_NAME_MAX_LEN];\n \n-\tunsigned int n = snprintf(ring_name, sizeof(ring_name), \"%s\", qp->name);\n+\tunsigned int n = strlcpy(ring_name, qp->name, sizeof(ring_name));\n \n \tif (n >= sizeof(ring_name))\n \t\treturn NULL;\ndiff --git a/drivers/crypto/ccp/rte_ccp_pmd.c b/drivers/crypto/ccp/rte_ccp_pmd.c\nindex b4bb5528f..4810d799c 100644\n--- a/drivers/crypto/ccp/rte_ccp_pmd.c\n+++ b/drivers/crypto/ccp/rte_ccp_pmd.c\n@@ -2,6 +2,7 @@\n  *   Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_bus_pci.h>\n #include <rte_bus_vdev.h>\n #include <rte_common.h>\n@@ -298,9 +299,8 @@ cryptodev_ccp_create(const char *name,\n \tuint8_t cryptodev_cnt = 0;\n \n \tif (init_params->def_p.name[0] == '\\0')\n-\t\tsnprintf(init_params->def_p.name,\n-\t\t\t sizeof(init_params->def_p.name),\n-\t\t\t \"%s\", name);\n+\t\tstrlcpy(init_params->def_p.name, name,\n+\t\t\tsizeof(init_params->def_p.name));\n \n \tdev = rte_cryptodev_pmd_create(init_params->def_p.name,\n \t\t\t\t       &vdev->device,\ndiff --git a/drivers/crypto/scheduler/rte_cryptodev_scheduler.c b/drivers/crypto/scheduler/rte_cryptodev_scheduler.c\nindex a21428606..1fef88f11 100644\n--- a/drivers/crypto/scheduler/rte_cryptodev_scheduler.c\n+++ b/drivers/crypto/scheduler/rte_cryptodev_scheduler.c\n@@ -1,6 +1,7 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n  * Copyright(c) 2017 Intel Corporation\n  */\n+#include <rte_string_fns.h>\n #include <rte_reorder.h>\n #include <rte_cryptodev.h>\n #include <rte_cryptodev_pmd.h>\n@@ -443,8 +444,7 @@ rte_cryptodev_scheduler_load_user_scheduler(uint8_t scheduler_id,\n \t\t\t\tRTE_CRYPTODEV_NAME_MAX_LEN);\n \t\treturn -EINVAL;\n \t}\n-\tsnprintf(sched_ctx->name, sizeof(sched_ctx->name), \"%s\",\n-\t\t\tscheduler->name);\n+\tstrlcpy(sched_ctx->name, scheduler->name, sizeof(sched_ctx->name));\n \n \tif (strlen(scheduler->description) >\n \t\t\tRTE_CRYPTODEV_SCHEDULER_DESC_MAX_LEN - 1) {\n@@ -453,8 +453,8 @@ rte_cryptodev_scheduler_load_user_scheduler(uint8_t scheduler_id,\n \t\t\t\tRTE_CRYPTODEV_SCHEDULER_DESC_MAX_LEN - 1);\n \t\treturn -EINVAL;\n \t}\n-\tsnprintf(sched_ctx->description, sizeof(sched_ctx->description), \"%s\",\n-\t\t\tscheduler->description);\n+\tstrlcpy(sched_ctx->description, scheduler->description,\n+\t\tsizeof(sched_ctx->description));\n \n \t/* load scheduler instance operations functions */\n \tsched_ctx->ops.config_queue_pair = scheduler->ops->config_queue_pair;\ndiff --git a/drivers/event/opdl/opdl_ring.c b/drivers/event/opdl/opdl_ring.c\nindex 8aca481c9..e988f1cb2 100644\n--- a/drivers/event/opdl/opdl_ring.c\n+++ b/drivers/event/opdl/opdl_ring.c\n@@ -7,6 +7,7 @@\n #include <stdint.h>\n #include <stdio.h>\n \n+#include <rte_string_fns.h>\n #include <rte_branch_prediction.h>\n #include <rte_debug.h>\n #include <rte_lcore.h>\n@@ -944,7 +945,7 @@ opdl_ring_create(const char *name, uint32_t num_slots, uint32_t slot_size,\n \n \t/* Initialise opdl_ring queue */\n \tmemset(t, 0, sizeof(*t));\n-\tsnprintf(t->name, sizeof(t->name), \"%s\", name);\n+\tstrlcpy(t->name, name, sizeof(t->name));\n \tt->socket = socket;\n \tt->num_slots = num_slots;\n \tt->mask = num_slots - 1;\ndiff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c\nindex 264cfc08f..99e13fe48 100644\n--- a/drivers/net/af_packet/rte_eth_af_packet.c\n+++ b/drivers/net/af_packet/rte_eth_af_packet.c\n@@ -6,6 +6,7 @@\n  * All rights reserved.\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_mbuf.h>\n #include <rte_ethdev_driver.h>\n #include <rte_ethdev_vdev.h>\n@@ -442,7 +443,7 @@ eth_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \tif (s < 0)\n \t\treturn -EINVAL;\n \n-\tsnprintf(ifr.ifr_name, IFNAMSIZ, \"%s\", internals->if_name);\n+\tstrlcpy(ifr.ifr_name, internals->if_name, IFNAMSIZ);\n \tret = ioctl(s, SIOCSIFMTU, &ifr);\n \tclose(s);\n \n@@ -462,7 +463,7 @@ eth_dev_change_flags(char *if_name, uint32_t flags, uint32_t mask)\n \tif (s < 0)\n \t\treturn;\n \n-\tsnprintf(ifr.ifr_name, IFNAMSIZ, \"%s\", if_name);\n+\tstrlcpy(ifr.ifr_name, if_name, IFNAMSIZ);\n \tif (ioctl(s, SIOCGIFFLAGS, &ifr) < 0)\n \t\tgoto out;\n \tifr.ifr_flags &= mask;\ndiff --git a/drivers/net/ark/ark_pktchkr.c b/drivers/net/ark/ark_pktchkr.c\nindex c21003a04..ef861eea3 100644\n--- a/drivers/net/ark/ark_pktchkr.c\n+++ b/drivers/net/ark/ark_pktchkr.c\n@@ -7,6 +7,7 @@\n #include <locale.h>\n #include <unistd.h>\n \n+#include <rte_string_fns.h>\n #include <rte_ethdev_driver.h>\n #include <rte_malloc.h>\n \n@@ -347,7 +348,7 @@ set_arg(char *arg, char *val)\n \t\t\to->v.INT = atoll(val);\n \t\t\tbreak;\n \t\tcase OTSTRING:\n-\t\t\tsnprintf(o->v.STR, ARK_MAX_STR_LEN, \"%s\", val);\n+\t\t\tstrlcpy(o->v.STR, val, ARK_MAX_STR_LEN);\n \t\t\tbreak;\n \t\t}\n \t\treturn 1;\ndiff --git a/drivers/net/ark/ark_pktgen.c b/drivers/net/ark/ark_pktgen.c\nindex 2a2b428e2..2cae252d6 100644\n--- a/drivers/net/ark/ark_pktgen.c\n+++ b/drivers/net/ark/ark_pktgen.c\n@@ -7,6 +7,7 @@\n #include <locale.h>\n #include <unistd.h>\n \n+#include <rte_string_fns.h>\n #include <rte_eal.h>\n \n #include <rte_ethdev_driver.h>\n@@ -329,7 +330,7 @@ pmd_set_arg(char *arg, char *val)\n \t\t\to->v.INT = atoll(val);\n \t\t\tbreak;\n \t\tcase OTSTRING:\n-\t\t\tsnprintf(o->v.STR, ARK_MAX_STR_LEN, \"%s\", val);\n+\t\t\tstrlcpy(o->v.STR, val, ARK_MAX_STR_LEN);\n \t\t\tbreak;\n \t\t}\n \t\treturn 1;\ndiff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c\nindex 5c62d137b..8327863cd 100644\n--- a/drivers/net/atlantic/atl_ethdev.c\n+++ b/drivers/net/atlantic/atl_ethdev.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2018 Aquantia Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_ethdev_pci.h>\n \n #include \"atl_ethdev.h\"\n@@ -755,8 +756,8 @@ atl_dev_xstats_get_names(struct rte_eth_dev *dev __rte_unused,\n \t\treturn RTE_DIM(atl_xstats_tbl);\n \n \tfor (i = 0; i < size && i < RTE_DIM(atl_xstats_tbl); i++)\n-\t\tsnprintf(xstats_names[i].name, RTE_ETH_XSTATS_NAME_SIZE, \"%s\",\n-\t\t\tatl_xstats_tbl[i].name);\n+\t\tstrlcpy(xstats_names[i].name, atl_xstats_tbl[i].name,\n+\t\t\tRTE_ETH_XSTATS_NAME_SIZE);\n \n \treturn i;\n }\ndiff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c\nindex cc7816dd5..1f2eb92b7 100644\n--- a/drivers/net/bnx2x/bnx2x_ethdev.c\n+++ b/drivers/net/bnx2x/bnx2x_ethdev.c\n@@ -8,6 +8,7 @@\n #include \"bnx2x.h\"\n #include \"bnx2x_rxtx.h\"\n \n+#include <rte_string_fns.h>\n #include <rte_dev.h>\n #include <rte_ethdev_pci.h>\n #include <rte_alarm.h>\n@@ -445,10 +446,9 @@ bnx2x_get_xstats_names(__rte_unused struct rte_eth_dev *dev,\n \n \tif (xstats_names != NULL)\n \t\tfor (i = 0; i < stat_cnt; i++)\n-\t\t\tsnprintf(xstats_names[i].name,\n-\t\t\t\tsizeof(xstats_names[i].name),\n-\t\t\t\t\"%s\",\n-\t\t\t\tbnx2x_xstats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[i].name,\n+\t\t\t\tbnx2x_xstats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[i].name));\n \n \treturn stat_cnt;\n }\ndiff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c\nindex c16bf99da..cae3b9ea2 100644\n--- a/drivers/net/bnxt/bnxt_stats.c\n+++ b/drivers/net/bnxt/bnxt_stats.c\n@@ -5,6 +5,7 @@\n \n #include <inttypes.h>\n \n+#include <rte_string_fns.h>\n #include <rte_byteorder.h>\n \n #include \"bnxt.h\"\n@@ -491,41 +492,36 @@ int bnxt_dev_xstats_get_names_op(__rte_unused struct rte_eth_dev *eth_dev,\n \t\tcount = 0;\n \n \t\tfor (i = 0; i < RTE_DIM(bnxt_rx_stats_strings); i++) {\n-\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\tsizeof(xstats_names[count].name),\n-\t\t\t\t\"%s\",\n-\t\t\t\tbnxt_rx_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\tbnxt_rx_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[count].name));\n \t\t\tcount++;\n \t\t}\n \n \t\tfor (i = 0; i < RTE_DIM(bnxt_tx_stats_strings); i++) {\n-\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\tsizeof(xstats_names[count].name),\n-\t\t\t\t\"%s\",\n-\t\t\t\tbnxt_tx_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\tbnxt_tx_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[count].name));\n \t\t\tcount++;\n \t\t}\n \n-\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\tsizeof(xstats_names[count].name),\n-\t\t\t\t\"%s\",\n-\t\t\t\tbnxt_func_stats_strings[4].name);\n+\t\tstrlcpy(xstats_names[count].name,\n+\t\t\tbnxt_func_stats_strings[4].name,\n+\t\t\tsizeof(xstats_names[count].name));\n \t\tcount++;\n \n \t\tfor (i = 0; i < RTE_DIM(bnxt_rx_ext_stats_strings); i++) {\n-\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\t sizeof(xstats_names[count].name),\n-\t\t\t\t \"%s\",\n-\t\t\t\t bnxt_rx_ext_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\tbnxt_rx_ext_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[count].name));\n \n \t\t\tcount++;\n \t\t}\n \n \t\tfor (i = 0; i < RTE_DIM(bnxt_tx_ext_stats_strings); i++) {\n-\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\t sizeof(xstats_names[count].name),\n-\t\t\t\t \"%s\",\n-\t\t\t\t bnxt_tx_ext_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\tbnxt_tx_ext_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[count].name));\n \n \t\t\tcount++;\n \t\t}\ndiff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c\nindex b1fac8fa7..2e043feb2 100644\n--- a/drivers/net/dpaa/dpaa_ethdev.c\n+++ b/drivers/net/dpaa/dpaa_ethdev.c\n@@ -15,6 +15,7 @@\n #include <sys/types.h>\n #include <sys/syscall.h>\n \n+#include <rte_string_fns.h>\n #include <rte_byteorder.h>\n #include <rte_common.h>\n #include <rte_interrupts.h>\n@@ -439,10 +440,9 @@ dpaa_xstats_get_names(__rte_unused struct rte_eth_dev *dev,\n \n \tif (xstats_names != NULL)\n \t\tfor (i = 0; i < stat_cnt; i++)\n-\t\t\tsnprintf(xstats_names[i].name,\n-\t\t\t\t sizeof(xstats_names[i].name),\n-\t\t\t\t \"%s\",\n-\t\t\t\t dpaa_xstats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[i].name,\n+\t\t\t\tdpaa_xstats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[i].name));\n \n \treturn stat_cnt;\n }\ndiff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c\nindex b897e8ad4..d3a8f5bf4 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -8,6 +8,7 @@\n #include <stdint.h>\n #include <stdarg.h>\n \n+#include <rte_string_fns.h>\n #include <rte_common.h>\n #include <rte_interrupts.h>\n #include <rte_byteorder.h>\n@@ -1904,8 +1905,8 @@ static int eth_igb_xstats_get_names(__rte_unused struct rte_eth_dev *dev,\n \t/* Note: limit checked in rte_eth_xstats_names() */\n \n \tfor (i = 0; i < IGB_NB_XSTATS; i++) {\n-\t\tsnprintf(xstats_names[i].name, sizeof(xstats_names[i].name),\n-\t\t\t \"%s\", rte_igb_stats_strings[i].name);\n+\t\tstrlcpy(xstats_names[i].name, rte_igb_stats_strings[i].name,\n+\t\t\tsizeof(xstats_names[i].name));\n \t}\n \n \treturn IGB_NB_XSTATS;\n@@ -1922,9 +1923,9 @@ static int eth_igb_xstats_get_names_by_id(struct rte_eth_dev *dev,\n \t\t\treturn IGB_NB_XSTATS;\n \n \t\tfor (i = 0; i < IGB_NB_XSTATS; i++)\n-\t\t\tsnprintf(xstats_names[i].name,\n-\t\t\t\t\tsizeof(xstats_names[i].name),\n-\t\t\t\t\t\"%s\", rte_igb_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[i].name,\n+\t\t\t\trte_igb_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[i].name));\n \n \t\treturn IGB_NB_XSTATS;\n \n@@ -2071,9 +2072,9 @@ static int eth_igbvf_xstats_get_names(__rte_unused struct rte_eth_dev *dev,\n \n \tif (xstats_names != NULL)\n \t\tfor (i = 0; i < IGBVF_NB_XSTATS; i++) {\n-\t\t\tsnprintf(xstats_names[i].name,\n-\t\t\t\tsizeof(xstats_names[i].name), \"%s\",\n-\t\t\t\trte_igbvf_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[i].name,\n+\t\t\t\trte_igbvf_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[i].name));\n \t\t}\n \treturn IGBVF_NB_XSTATS;\n }\ndiff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c\nindex 08b1ab195..a55b4a719 100644\n--- a/drivers/net/ena/ena_ethdev.c\n+++ b/drivers/net/ena/ena_ethdev.c\n@@ -31,6 +31,7 @@\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n \n+#include <rte_string_fns.h>\n #include <rte_ether.h>\n #include <rte_ethdev_driver.h>\n #include <rte_ethdev_pci.h>\n@@ -421,13 +422,11 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev)\n \n \thost_info->os_type = ENA_ADMIN_OS_DPDK;\n \thost_info->kernel_ver = RTE_VERSION;\n-\tsnprintf((char *)host_info->kernel_ver_str,\n-\t\t sizeof(host_info->kernel_ver_str),\n-\t\t \"%s\", rte_version());\n+\tstrlcpy((char *)host_info->kernel_ver_str, rte_version(),\n+\t\tsizeof(host_info->kernel_ver_str));\n \thost_info->os_dist = RTE_VERSION;\n-\tsnprintf((char *)host_info->os_dist_str,\n-\t\t sizeof(host_info->os_dist_str),\n-\t\t \"%s\", rte_version());\n+\tstrlcpy((char *)host_info->os_dist_str, rte_version(),\n+\t\tsizeof(host_info->os_dist_str));\n \thost_info->driver_version =\n \t\t(DRV_MODULE_VER_MAJOR) |\n \t\t(DRV_MODULE_VER_MINOR << ENA_ADMIN_HOST_INFO_MINOR_SHIFT) |\ndiff --git a/drivers/net/failsafe/failsafe_eal.c b/drivers/net/failsafe/failsafe_eal.c\nindex 74fd8e97c..820a915f7 100644\n--- a/drivers/net/failsafe/failsafe_eal.c\n+++ b/drivers/net/failsafe/failsafe_eal.c\n@@ -3,6 +3,7 @@\n  * Copyright 2017 Mellanox Technologies, Ltd\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_malloc.h>\n \n #include \"failsafe_private.h\"\n@@ -84,8 +85,9 @@ fs_bus_init(struct rte_eth_dev *dev)\n \t\t\t\tsnprintf(devstr, sizeof(devstr), \"%s,%s\",\n \t\t\t\t\t probed_da->name, probed_da->args);\n \t\t\telse\n-\t\t\t\tsnprintf(devstr, sizeof(devstr), \"%s\",\n-\t\t\t\t\t rte_eth_devices[pid].device->name);\n+\t\t\t\tstrlcpy(devstr,\n+\t\t\t\t\trte_eth_devices[pid].device->name,\n+\t\t\t\t\tsizeof(devstr));\n \t\t\tret = rte_devargs_parse(da, devstr);\n \t\t\tif (ret) {\n \t\t\t\tERROR(\"Probed devargs parsing failed with code\"\ndiff --git a/drivers/net/i40e/rte_pmd_i40e.c b/drivers/net/i40e/rte_pmd_i40e.c\nindex c49c872b6..7ae78e426 100644\n--- a/drivers/net/i40e/rte_pmd_i40e.c\n+++ b/drivers/net/i40e/rte_pmd_i40e.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2010-2017 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_malloc.h>\n #include <rte_tailq.h>\n \n@@ -1983,8 +1984,8 @@ int rte_pmd_i40e_get_ddp_info(uint8_t *pkg_buff, uint32_t pkg_size,\n \t\ttlv = (struct i40e_profile_tlv_section_record *)&proto[1];\n \t\tfor (i = j = 0; i < nb_rec; j++) {\n \t\t\tpinfo[j].proto_id = tlv->data[0];\n-\t\t\tsnprintf(pinfo[j].name, I40E_DDP_NAME_SIZE, \"%s\",\n-\t\t\t\t (const char *)&tlv->data[1]);\n+\t\t\tstrlcpy(pinfo[j].name, (const char *)&tlv->data[1],\n+\t\t\t\tI40E_DDP_NAME_SIZE);\n \t\t\ti += tlv->len;\n \t\t\ttlv = &tlv[tlv->len];\n \t\t}\ndiff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c\nindex 1482cedb5..a06ebdadf 100644\n--- a/drivers/net/ice/ice_ethdev.c\n+++ b/drivers/net/ice/ice_ethdev.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2018 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_ethdev_pci.h>\n \n #include <stdio.h>\n@@ -3437,17 +3438,15 @@ static int ice_xstats_get_names(__rte_unused struct rte_eth_dev *dev,\n \n \t/* Get stats from ice_eth_stats struct */\n \tfor (i = 0; i < ICE_NB_ETH_XSTATS; i++) {\n-\t\tsnprintf(xstats_names[count].name,\n-\t\t\t sizeof(xstats_names[count].name),\n-\t\t\t \"%s\", ice_stats_strings[i].name);\n+\t\tstrlcpy(xstats_names[count].name, ice_stats_strings[i].name,\n+\t\t\tsizeof(xstats_names[count].name));\n \t\tcount++;\n \t}\n \n \t/* Get individiual stats from ice_hw_port struct */\n \tfor (i = 0; i < ICE_NB_HW_PORT_XSTATS; i++) {\n-\t\tsnprintf(xstats_names[count].name,\n-\t\t\t sizeof(xstats_names[count].name),\n-\t\t\t \"%s\", ice_hw_port_strings[i].name);\n+\t\tstrlcpy(xstats_names[count].name, ice_hw_port_strings[i].name,\n+\t\t\tsizeof(xstats_names[count].name));\n \t\tcount++;\n \t}\n \ndiff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c\nindex feec85634..b1be0c8b0 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -11,6 +11,7 @@\n #include <stdarg.h>\n #include <inttypes.h>\n #include <netinet/in.h>\n+#include <rte_string_fns.h>\n #include <rte_byteorder.h>\n #include <rte_common.h>\n #include <rte_cycles.h>\n@@ -3293,19 +3294,17 @@ static int ixgbe_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,\n \n \t\t/* Extended stats from ixgbe_hw_stats */\n \t\tfor (i = 0; i < IXGBE_NB_HW_STATS; i++) {\n-\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\tsizeof(xstats_names[count].name),\n-\t\t\t\t\"%s\",\n-\t\t\t\trte_ixgbe_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\trte_ixgbe_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[count].name));\n \t\t\tcount++;\n \t\t}\n \n \t\t/* MACsec Stats */\n \t\tfor (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {\n-\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\tsizeof(xstats_names[count].name),\n-\t\t\t\t\"%s\",\n-\t\t\t\trte_ixgbe_macsec_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\trte_ixgbe_macsec_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[count].name));\n \t\t\tcount++;\n \t\t}\n \n@@ -3353,19 +3352,17 @@ static int ixgbe_dev_xstats_get_names_by_id(\n \n \t\t\t/* Extended stats from ixgbe_hw_stats */\n \t\t\tfor (i = 0; i < IXGBE_NB_HW_STATS; i++) {\n-\t\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\t\tsizeof(xstats_names[count].name),\n-\t\t\t\t\t\"%s\",\n-\t\t\t\t\trte_ixgbe_stats_strings[i].name);\n+\t\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\t\trte_ixgbe_stats_strings[i].name,\n+\t\t\t\t\tsizeof(xstats_names[count].name));\n \t\t\t\tcount++;\n \t\t\t}\n \n \t\t\t/* MACsec Stats */\n \t\t\tfor (i = 0; i < IXGBE_NB_MACSEC_STATS; i++) {\n-\t\t\t\tsnprintf(xstats_names[count].name,\n-\t\t\t\t\tsizeof(xstats_names[count].name),\n-\t\t\t\t\t\"%s\",\n-\t\t\t\t\trte_ixgbe_macsec_strings[i].name);\n+\t\t\t\tstrlcpy(xstats_names[count].name,\n+\t\t\t\t\trte_ixgbe_macsec_strings[i].name,\n+\t\t\t\t\tsizeof(xstats_names[count].name));\n \t\t\t\tcount++;\n \t\t\t}\n \n@@ -3422,9 +3419,9 @@ static int ixgbevf_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,\n \n \tif (xstats_names != NULL)\n \t\tfor (i = 0; i < IXGBEVF_NB_XSTATS; i++)\n-\t\t\tsnprintf(xstats_names[i].name,\n-\t\t\t\tsizeof(xstats_names[i].name),\n-\t\t\t\t\"%s\", rte_ixgbevf_stats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[i].name,\n+\t\t\t\trte_ixgbevf_stats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[i].name));\n \treturn IXGBEVF_NB_XSTATS;\n }\n \ndiff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c\nindex 5e0222423..89f44737c 100644\n--- a/drivers/net/kni/rte_eth_kni.c\n+++ b/drivers/net/kni/rte_eth_kni.c\n@@ -6,6 +6,7 @@\n #include <pthread.h>\n #include <unistd.h>\n \n+#include <rte_string_fns.h>\n #include <rte_ethdev_driver.h>\n #include <rte_ethdev_vdev.h>\n #include <rte_kni.h>\n@@ -126,7 +127,7 @@ eth_kni_start(struct rte_eth_dev *dev)\n \tconst char *name = dev->device->name + 4; /* remove net_ */\n \n \tmb_pool = internals->rx_queues[0].mb_pool;\n-\tsnprintf(conf.name, RTE_KNI_NAMESIZE, \"%s\", name);\n+\tstrlcpy(conf.name, name, RTE_KNI_NAMESIZE);\n \tconf.force_bind = 0;\n \tconf.group_id = port_id;\n \tconf.mbuf_size =\ndiff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c\nindex d13ab06c0..c9cabd65a 100644\n--- a/drivers/net/liquidio/lio_ethdev.c\n+++ b/drivers/net/liquidio/lio_ethdev.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2017 Cavium, Inc\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_ethdev_driver.h>\n #include <rte_ethdev_pci.h>\n #include <rte_cycles.h>\n@@ -1781,8 +1782,8 @@ lio_dev_configure(struct rte_eth_dev *eth_dev)\n \t\tgoto nic_config_fail;\n \t}\n \n-\tsnprintf(lio_dev->firmware_version, LIO_FW_VERSION_LENGTH, \"%s\",\n-\t\t resp->cfg_info.lio_firmware_version);\n+\tstrlcpy(lio_dev->firmware_version,\n+\t\tresp->cfg_info.lio_firmware_version, LIO_FW_VERSION_LENGTH);\n \n \tlio_swap_8B_data((uint64_t *)(&resp->cfg_info),\n \t\t\t sizeof(struct octeon_if_cfg_info) >> 3);\ndiff --git a/drivers/net/mvneta/mvneta_ethdev.c b/drivers/net/mvneta/mvneta_ethdev.c\nindex 2d7666454..8923a1634 100644\n--- a/drivers/net/mvneta/mvneta_ethdev.c\n+++ b/drivers/net/mvneta/mvneta_ethdev.c\n@@ -4,6 +4,7 @@\n  * All rights reserved.\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_ethdev_driver.h>\n #include <rte_kvargs.h>\n #include <rte_bus_vdev.h>\n@@ -347,7 +348,7 @@ mvneta_dev_start(struct rte_eth_dev *dev)\n \tif (priv->ppio)\n \t\treturn mvneta_dev_set_link_up(dev);\n \n-\tsnprintf(match, sizeof(match), \"%s\", dev->data->name);\n+\tstrlcpy(match, dev->data->name, sizeof(match));\n \tpriv->ppio_params.match = match;\n \tpriv->ppio_params.inqs_params.mtu = dev->data->mtu;\n \ndiff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c\nindex ab4c14e51..ce52f0901 100644\n--- a/drivers/net/mvpp2/mrvl_ethdev.c\n+++ b/drivers/net/mvpp2/mrvl_ethdev.c\n@@ -4,6 +4,7 @@\n  * All rights reserved.\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_ethdev_driver.h>\n #include <rte_kvargs.h>\n #include <rte_log.h>\n@@ -1388,8 +1389,8 @@ mrvl_xstats_get_names(struct rte_eth_dev *dev __rte_unused,\n \t\treturn RTE_DIM(mrvl_xstats_tbl);\n \n \tfor (i = 0; i < size && i < RTE_DIM(mrvl_xstats_tbl); i++)\n-\t\tsnprintf(xstats_names[i].name, RTE_ETH_XSTATS_NAME_SIZE, \"%s\",\n-\t\t\t mrvl_xstats_tbl[i].name);\n+\t\tstrlcpy(xstats_names[i].name, mrvl_xstats_tbl[i].name,\n+\t\t\tRTE_ETH_XSTATS_NAME_SIZE);\n \n \treturn size;\n }\ndiff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c\nindex 0b2f305e1..b2fd2fd90 100644\n--- a/drivers/net/qede/qede_ethdev.c\n+++ b/drivers/net/qede/qede_ethdev.c\n@@ -5,6 +5,7 @@\n  */\n \n #include \"qede_ethdev.h\"\n+#include <rte_string_fns.h>\n #include <rte_alarm.h>\n #include <rte_version.h>\n #include <rte_kvargs.h>\n@@ -1591,27 +1592,24 @@ qede_get_xstats_names(struct rte_eth_dev *dev,\n \n \tif (xstats_names != NULL) {\n \t\tfor (i = 0; i < RTE_DIM(qede_xstats_strings); i++) {\n-\t\t\tsnprintf(xstats_names[stat_idx].name,\n-\t\t\t\tsizeof(xstats_names[stat_idx].name),\n-\t\t\t\t\"%s\",\n-\t\t\t\tqede_xstats_strings[i].name);\n+\t\t\tstrlcpy(xstats_names[stat_idx].name,\n+\t\t\t\tqede_xstats_strings[i].name,\n+\t\t\t\tsizeof(xstats_names[stat_idx].name));\n \t\t\tstat_idx++;\n \t\t}\n \n \t\tif (ECORE_IS_BB(edev)) {\n \t\t\tfor (i = 0; i < RTE_DIM(qede_bb_xstats_strings); i++) {\n-\t\t\t\tsnprintf(xstats_names[stat_idx].name,\n-\t\t\t\t\tsizeof(xstats_names[stat_idx].name),\n-\t\t\t\t\t\"%s\",\n-\t\t\t\t\tqede_bb_xstats_strings[i].name);\n+\t\t\t\tstrlcpy(xstats_names[stat_idx].name,\n+\t\t\t\t\tqede_bb_xstats_strings[i].name,\n+\t\t\t\t\tsizeof(xstats_names[stat_idx].name));\n \t\t\t\tstat_idx++;\n \t\t\t}\n \t\t} else {\n \t\t\tfor (i = 0; i < RTE_DIM(qede_ah_xstats_strings); i++) {\n-\t\t\t\tsnprintf(xstats_names[stat_idx].name,\n-\t\t\t\t\tsizeof(xstats_names[stat_idx].name),\n-\t\t\t\t\t\"%s\",\n-\t\t\t\t\tqede_ah_xstats_strings[i].name);\n+\t\t\t\tstrlcpy(xstats_names[stat_idx].name,\n+\t\t\t\t\tqede_ah_xstats_strings[i].name,\n+\t\t\t\t\tsizeof(xstats_names[stat_idx].name));\n \t\t\t\tstat_idx++;\n \t\t\t}\n \t\t}\ndiff --git a/drivers/net/virtio/virtio_user/vhost_user.c b/drivers/net/virtio/virtio_user/vhost_user.c\nindex 2c6eba0a6..827a48ad6 100644\n--- a/drivers/net/virtio/virtio_user/vhost_user.c\n+++ b/drivers/net/virtio/virtio_user/vhost_user.c\n@@ -11,6 +11,7 @@\n #include <string.h>\n #include <errno.h>\n \n+#include <rte_string_fns.h>\n #include <rte_fbarray.h>\n #include <rte_eal_memconfig.h>\n \n@@ -424,7 +425,7 @@ vhost_user_setup(struct virtio_user_dev *dev)\n \n \tmemset(&un, 0, sizeof(un));\n \tun.sun_family = AF_UNIX;\n-\tsnprintf(un.sun_path, sizeof(un.sun_path), \"%s\", dev->path);\n+\tstrlcpy(un.sun_path, dev->path, sizeof(un.sun_path));\n \n \tif (dev->is_server) {\n \t\tdev->listenfd = fd;\ndiff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c\nindex b004bc13a..8e420bcbc 100644\n--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c\n+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c\n@@ -13,6 +13,7 @@\n #include <sys/types.h>\n #include <sys/stat.h>\n \n+#include <rte_string_fns.h>\n #include <rte_eal_memconfig.h>\n \n #include \"vhost.h\"\n@@ -429,7 +430,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues,\n \t\t     int server, int mrg_rxbuf, int in_order, int packed_vq)\n {\n \tpthread_mutex_init(&dev->mutex, NULL);\n-\tsnprintf(dev->path, PATH_MAX, \"%s\", path);\n+\tstrlcpy(dev->path, path, PATH_MAX);\n \tdev->started = 0;\n \tdev->max_queue_pairs = queues;\n \tdev->queue_pairs = 1; /* mq disabled by default */\ndiff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c\nindex e6a2e88c7..bf10139e7 100644\n--- a/examples/ethtool/lib/rte_ethtool.c\n+++ b/examples/ethtool/lib/rte_ethtool.c\n@@ -4,6 +4,7 @@\n #include <stdio.h>\n #include <string.h>\n #include <stdint.h>\n+#include <rte_string_fns.h>\n #include <rte_version.h>\n #include <rte_ethdev.h>\n #include <rte_ether.h>\n@@ -43,10 +44,9 @@ rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo)\n \tmemset(&dev_info, 0, sizeof(dev_info));\n \trte_eth_dev_info_get(port_id, &dev_info);\n \n-\tsnprintf(drvinfo->driver, sizeof(drvinfo->driver), \"%s\",\n-\t\tdev_info.driver_name);\n-\tsnprintf(drvinfo->version, sizeof(drvinfo->version), \"%s\",\n-\t\trte_version());\n+\tstrlcpy(drvinfo->driver, dev_info.driver_name,\n+\t\tsizeof(drvinfo->driver));\n+\tstrlcpy(drvinfo->version, rte_version(), sizeof(drvinfo->version));\n \t/* TODO: replace bus_info by rte_devargs.name */\n \tif (dev_info.device)\n \t\tbus = rte_bus_find_by_device(dev_info.device);\ndiff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c\nindex 9982f07e9..06517b471 100644\n--- a/examples/l2fwd-crypto/main.c\n+++ b/examples/l2fwd-crypto/main.c\n@@ -19,6 +19,7 @@\n #include <fcntl.h>\n #include <unistd.h>\n \n+#include <rte_string_fns.h>\n #include <rte_atomic.h>\n #include <rte_branch_prediction.h>\n #include <rte_common.h>\n@@ -1199,8 +1200,7 @@ l2fwd_crypto_parse_args_long_options(struct l2fwd_crypto_options *options,\n \tif (strcmp(lgopts[option_index].name, \"cdev_type\") == 0) {\n \t\tretval = parse_cryptodev_type(&options->type, optarg);\n \t\tif (retval == 0)\n-\t\t\tsnprintf(options->string_type, MAX_STR_LEN,\n-\t\t\t\t\"%s\", optarg);\n+\t\t\tstrlcpy(options->string_type, optarg, MAX_STR_LEN);\n \t\treturn retval;\n \t}\n \ndiff --git a/examples/vm_power_manager/channel_manager.c b/examples/vm_power_manager/channel_manager.c\nindex 09bfa5c0d..0187f79ab 100644\n--- a/examples/vm_power_manager/channel_manager.c\n+++ b/examples/vm_power_manager/channel_manager.c\n@@ -17,6 +17,7 @@\n #include <sys/socket.h>\n #include <sys/select.h>\n \n+#include <rte_string_fns.h>\n #include <rte_malloc.h>\n #include <rte_memory.h>\n #include <rte_mempool.h>\n@@ -415,7 +416,7 @@ add_all_channels(const char *vm_name)\n \t\t\t\t!strncmp(dir->d_name, \"..\", 2))\n \t\t\tcontinue;\n \n-\t\tsnprintf(socket_name, sizeof(socket_name), \"%s\", dir->d_name);\n+\t\tstrlcpy(socket_name, dir->d_name, sizeof(socket_name));\n \t\tremaining = socket_name;\n \t\t/* Extract vm_name from \"<vm_name>.<channel_num>\" */\n \t\ttoken = strsep(&remaining, \".\");\n@@ -562,8 +563,8 @@ add_host_channel(void)\n \t\t\t\t\"channel '%s'\\n\", socket_path);\n \t\treturn 0;\n \t}\n-\tsnprintf(chan_info->channel_path,\n-\t\t\tsizeof(chan_info->channel_path), \"%s\", socket_path);\n+\tstrlcpy(chan_info->channel_path, socket_path,\n+\t\tsizeof(chan_info->channel_path));\n \tif (setup_host_channel_info(&chan_info, 0) < 0) {\n \t\trte_free(chan_info);\n \t\treturn 0;\ndiff --git a/examples/vm_power_manager/channel_monitor.c b/examples/vm_power_manager/channel_monitor.c\nindex 7892d75de..74df0fe20 100644\n--- a/examples/vm_power_manager/channel_monitor.c\n+++ b/examples/vm_power_manager/channel_monitor.c\n@@ -21,6 +21,7 @@\n #else\n #pragma message \"Jansson dev libs unavailable, not including JSON parsing\"\n #endif\n+#include <rte_string_fns.h>\n #include <rte_log.h>\n #include <rte_memory.h>\n #include <rte_malloc.h>\n@@ -161,7 +162,7 @@ parse_json_to_pkt(json_t *element, struct channel_packet *pkt)\n \t\t\tstrcpy(pkt->vm_name, json_string_value(value));\n \t\t} else if (!strcmp(key, \"command\")) {\n \t\t\tchar command[32];\n-\t\t\tsnprintf(command, 32, \"%s\", json_string_value(value));\n+\t\t\tstrlcpy(command, json_string_value(value), 32);\n \t\t\tif (!strcmp(command, \"power\")) {\n \t\t\t\tpkt->command = CPU_POWER;\n \t\t\t} else if (!strcmp(command, \"create\")) {\n@@ -175,7 +176,7 @@ parse_json_to_pkt(json_t *element, struct channel_packet *pkt)\n \t\t\t}\n \t\t} else if (!strcmp(key, \"policy_type\")) {\n \t\t\tchar command[32];\n-\t\t\tsnprintf(command, 32, \"%s\", json_string_value(value));\n+\t\t\tstrlcpy(command, json_string_value(value), 32);\n \t\t\tif (!strcmp(command, \"TIME\")) {\n \t\t\t\tpkt->policy_to_use = TIME;\n \t\t\t} else if (!strcmp(command, \"TRAFFIC\")) {\n@@ -191,7 +192,7 @@ parse_json_to_pkt(json_t *element, struct channel_packet *pkt)\n \t\t\t}\n \t\t} else if (!strcmp(key, \"workload\")) {\n \t\t\tchar command[32];\n-\t\t\tsnprintf(command, 32, \"%s\", json_string_value(value));\n+\t\t\tstrlcpy(command, json_string_value(value), 32);\n \t\t\tif (!strcmp(command, \"HIGH\")) {\n \t\t\t\tpkt->workload = HIGH;\n \t\t\t} else if (!strcmp(command, \"MEDIUM\")) {\n@@ -237,8 +238,9 @@ parse_json_to_pkt(json_t *element, struct channel_packet *pkt)\n \n \t\t\tfor (i = 0; i < size; i++) {\n \t\t\t\tchar mac[32];\n-\t\t\t\tsnprintf(mac, 32, \"%s\", json_string_value(\n-\t\t\t\t\t\tjson_array_get(value, i)));\n+\t\t\t\tstrlcpy(mac,\n+\t\t\t\t\tjson_string_value(json_array_get(value, i)),\n+\t\t\t\t\t32);\n \t\t\t\tset_policy_mac(pkt, i, mac);\n \t\t\t}\n \t\t\tpkt->nb_mac_to_monitor = size;\n@@ -250,7 +252,7 @@ parse_json_to_pkt(json_t *element, struct channel_packet *pkt)\n \t\t\t\t\t(uint32_t)json_integer_value(value);\n \t\t} else if (!strcmp(key, \"unit\")) {\n \t\t\tchar unit[32];\n-\t\t\tsnprintf(unit, 32, \"%s\", json_string_value(value));\n+\t\t\tstrlcpy(unit, json_string_value(value), 32);\n \t\t\tif (!strcmp(unit, \"SCALE_UP\")) {\n \t\t\t\tpkt->unit = CPU_POWER_SCALE_UP;\n \t\t\t} else if (!strcmp(unit, \"SCALE_DOWN\")) {\ndiff --git a/lib/librte_acl/rte_acl.c b/lib/librte_acl/rte_acl.c\nindex db7d3221e..c436a9bfd 100644\n--- a/lib/librte_acl/rte_acl.c\n+++ b/lib/librte_acl/rte_acl.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2010-2014 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_acl.h>\n #include \"acl.h\"\n \n@@ -249,7 +250,7 @@ rte_acl_create(const struct rte_acl_param *param)\n \t\tctx->rule_sz = param->rule_size;\n \t\tctx->socket_id = param->socket_id;\n \t\tctx->alg = rte_acl_default_classify;\n-\t\tsnprintf(ctx->name, sizeof(ctx->name), \"%s\", param->name);\n+\t\tstrlcpy(ctx->name, param->name, sizeof(ctx->name));\n \n \t\tte->data = (void *) ctx;\n \ndiff --git a/lib/librte_bbdev/rte_bbdev.c b/lib/librte_bbdev/rte_bbdev.c\nindex c4cc18d98..a3ab5d973 100644\n--- a/lib/librte_bbdev/rte_bbdev.c\n+++ b/lib/librte_bbdev/rte_bbdev.c\n@@ -6,6 +6,7 @@\n #include <string.h>\n #include <stdbool.h>\n \n+#include <rte_string_fns.h>\n #include <rte_compat.h>\n #include <rte_common.h>\n #include <rte_errno.h>\n@@ -214,7 +215,7 @@ rte_bbdev_allocate(const char *name)\n \tbbdev->data->dev_id = dev_id;\n \tbbdev->state = RTE_BBDEV_INITIALIZED;\n \n-\tret = snprintf(bbdev->data->name, RTE_BBDEV_NAME_MAX_LEN, \"%s\", name);\n+\tret = strlcpy(bbdev->data->name, name, RTE_BBDEV_NAME_MAX_LEN);\n \tif ((ret < 0) || (ret >= RTE_BBDEV_NAME_MAX_LEN)) {\n \t\trte_bbdev_log(ERR, \"Copying device name \\\"%s\\\" failed\", name);\n \t\treturn NULL;\ndiff --git a/lib/librte_cfgfile/rte_cfgfile.c b/lib/librte_cfgfile/rte_cfgfile.c\nindex 7d8c941ea..6110dba76 100644\n--- a/lib/librte_cfgfile/rte_cfgfile.c\n+++ b/lib/librte_cfgfile/rte_cfgfile.c\n@@ -7,6 +7,7 @@\n #include <string.h>\n #include <ctype.h>\n #include <errno.h>\n+#include <rte_string_fns.h>\n #include <rte_common.h>\n \n #include \"rte_cfgfile.h\"\n@@ -113,9 +114,8 @@ _add_entry(struct rte_cfgfile_section *section, const char *entryname,\n \tstruct rte_cfgfile_entry *curr_entry =\n \t\t\t\t\t&section->entries[section->num_entries];\n \n-\tsnprintf(curr_entry->name, sizeof(curr_entry->name), \"%s\", entryname);\n-\tsnprintf(curr_entry->value,\n-\t\t\t\tsizeof(curr_entry->value), \"%s\", entryvalue);\n+\tstrlcpy(curr_entry->name, entryname, sizeof(curr_entry->name));\n+\tstrlcpy(curr_entry->value, entryvalue, sizeof(curr_entry->value));\n \tsection->num_entries++;\n \n \treturn 0;\n@@ -341,8 +341,8 @@ rte_cfgfile_add_section(struct rte_cfgfile *cfg, const char *sectionname)\n \t\tcfg->allocated_sections += CFG_ALLOC_SECTION_BATCH;\n \t}\n \n-\tsnprintf(cfg->sections[cfg->num_sections].name,\n-\t\t\tsizeof(cfg->sections[0].name), \"%s\", sectionname);\n+\tstrlcpy(cfg->sections[cfg->num_sections].name, sectionname,\n+\t\tsizeof(cfg->sections[0].name));\n \tcfg->sections[cfg->num_sections].num_entries = 0;\n \tcfg->num_sections++;\n \n@@ -392,9 +392,8 @@ int rte_cfgfile_set_entry(struct rte_cfgfile *cfg, const char *sectionname,\n \n \tfor (i = 0; i < curr_section->num_entries; i++)\n \t\tif (!strcmp(curr_section->entries[i].name, entryname)) {\n-\t\t\tsnprintf(curr_section->entries[i].value,\n-\t\t\t\t\tsizeof(curr_section->entries[i].value),\n-\t\t\t\t\t\t\t\"%s\", entryvalue);\n+\t\t\tstrlcpy(curr_section->entries[i].value, entryvalue,\n+\t\t\t\tsizeof(curr_section->entries[i].value));\n \t\t\treturn 0;\n \t\t}\n \tprintf(\"Error - entry name doesn't exist\\n\");\n@@ -468,8 +467,7 @@ rte_cfgfile_sections(struct rte_cfgfile *cfg, char *sections[],\n \tint i;\n \n \tfor (i = 0; i < cfg->num_sections && i < max_sections; i++)\n-\t\tsnprintf(sections[i], CFG_NAME_LEN, \"%s\",\n-\t\tcfg->sections[i].name);\n+\t\tstrlcpy(sections[i], cfg->sections[i].name, CFG_NAME_LEN);\n \n \treturn i;\n }\n@@ -499,7 +497,7 @@ rte_cfgfile_section_num_entries_by_index(struct rte_cfgfile *cfg,\n \n \tconst struct rte_cfgfile_section *sect = &(cfg->sections[index]);\n \n-\tsnprintf(sectionname, CFG_NAME_LEN, \"%s\", sect->name);\n+\tstrlcpy(sectionname, sect->name, CFG_NAME_LEN);\n \treturn sect->num_entries;\n }\n int\n@@ -526,7 +524,7 @@ rte_cfgfile_section_entries_by_index(struct rte_cfgfile *cfg, int index,\n \tif (index < 0 || index >= cfg->num_sections)\n \t\treturn -1;\n \tsect = &cfg->sections[index];\n-\tsnprintf(sectionname, CFG_NAME_LEN, \"%s\", sect->name);\n+\tstrlcpy(sectionname, sect->name, CFG_NAME_LEN);\n \tfor (i = 0; i < max_entries && i < sect->num_entries; i++)\n \t\tentries[i] = sect->entries[i];\n \treturn i;\ndiff --git a/lib/librte_compressdev/rte_compressdev.c b/lib/librte_compressdev/rte_compressdev.c\nindex 338134bdf..afba584c9 100644\n--- a/lib/librte_compressdev/rte_compressdev.c\n+++ b/lib/librte_compressdev/rte_compressdev.c\n@@ -7,6 +7,7 @@\n #include <stdio.h>\n #include <inttypes.h>\n \n+#include <rte_string_fns.h>\n #include <rte_malloc.h>\n #include <rte_eal.h>\n #include <rte_memzone.h>\n@@ -252,8 +253,8 @@ rte_compressdev_pmd_allocate(const char *name, int socket_id)\n \n \t\tcompressdev->data = compressdev_data;\n \n-\t\tsnprintf(compressdev->data->name, RTE_COMPRESSDEV_NAME_MAX_LEN,\n-\t\t\t\t\"%s\", name);\n+\t\tstrlcpy(compressdev->data->name, name,\n+\t\t\tRTE_COMPRESSDEV_NAME_MAX_LEN);\n \n \t\tcompressdev->data->dev_id = dev_id;\n \t\tcompressdev->data->socket_id = socket_id;\ndiff --git a/lib/librte_compressdev/rte_compressdev_pmd.c b/lib/librte_compressdev/rte_compressdev_pmd.c\nindex 95beb26ab..cc51d69c8 100644\n--- a/lib/librte_compressdev/rte_compressdev_pmd.c\n+++ b/lib/librte_compressdev/rte_compressdev_pmd.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2017-2018 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_malloc.h>\n #include <rte_kvargs.h>\n #include <rte_eal.h>\n@@ -21,7 +22,7 @@ rte_compressdev_pmd_parse_name_arg(const char *key __rte_unused,\n \tstruct rte_compressdev_pmd_init_params *params = extra_args;\n \tint n;\n \n-\tn = snprintf(params->name, RTE_COMPRESSDEV_NAME_MAX_LEN, \"%s\", value);\n+\tn = strlcpy(params->name, value, RTE_COMPRESSDEV_NAME_MAX_LEN);\n \tif (n >= RTE_COMPRESSDEV_NAME_MAX_LEN)\n \t\treturn -EINVAL;\n \ndiff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.c b/lib/librte_cryptodev/rte_cryptodev_pmd.c\nindex f03bdbd5e..091200412 100644\n--- a/lib/librte_cryptodev/rte_cryptodev_pmd.c\n+++ b/lib/librte_cryptodev/rte_cryptodev_pmd.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2017 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_malloc.h>\n \n #include \"rte_cryptodev_pmd.h\"\n@@ -16,7 +17,7 @@ rte_cryptodev_pmd_parse_name_arg(const char *key __rte_unused,\n \tstruct rte_cryptodev_pmd_init_params *params = extra_args;\n \tint n;\n \n-\tn = snprintf(params->name, RTE_CRYPTODEV_NAME_MAX_LEN, \"%s\", value);\n+\tn = strlcpy(params->name, value, RTE_CRYPTODEV_NAME_MAX_LEN);\n \tif (n >= RTE_CRYPTODEV_NAME_MAX_LEN)\n \t\treturn -EINVAL;\n \ndiff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c\nindex 8dcfeb9b2..0c91024c4 100644\n--- a/lib/librte_eal/common/eal_common_options.c\n+++ b/lib/librte_eal/common/eal_common_options.c\n@@ -16,6 +16,7 @@\n #include <sys/stat.h>\n #include <dirent.h>\n \n+#include <rte_string_fns.h>\n #include <rte_eal.h>\n #include <rte_log.h>\n #include <rte_lcore.h>\n@@ -139,7 +140,7 @@ eal_option_device_add(enum rte_devtype type, const char *optarg)\n \t}\n \n \tdevopt->type = type;\n-\tret = snprintf(devopt->arg, optlen, \"%s\", optarg);\n+\tret = strlcpy(devopt->arg, optarg, optlen);\n \tif (ret < 0) {\n \t\tRTE_LOG(ERR, EAL, \"Unable to copy device option\\n\");\n \t\tfree(devopt);\ndiff --git a/lib/librte_efd/rte_efd.c b/lib/librte_efd/rte_efd.c\nindex 1a97ece05..14e493bc3 100644\n--- a/lib/librte_efd/rte_efd.c\n+++ b/lib/librte_efd/rte_efd.c\n@@ -9,6 +9,7 @@\n #include <stdarg.h>\n #include <sys/queue.h>\n \n+#include <rte_string_fns.h>\n #include <rte_log.h>\n #include <rte_eal_memconfig.h>\n #include <rte_errno.h>\n@@ -591,7 +592,7 @@ rte_efd_create(const char *name, uint32_t max_num_rules, uint32_t key_len,\n \t\tgoto error_unlock_exit;\n \t}\n \ttable->keys = key_array;\n-\tsnprintf(table->name, sizeof(table->name), \"%s\", name);\n+\tstrlcpy(table->name, name, sizeof(table->name));\n \n \tRTE_LOG(DEBUG, EFD, \"Creating an EFD table with %u chunks,\"\n \t\t\t\" which potentially supports %u entries\\n\",\ndiff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c\nindex 4d4f07919..3bd571a87 100644\n--- a/lib/librte_eventdev/rte_eventdev.c\n+++ b/lib/librte_eventdev/rte_eventdev.c\n@@ -13,6 +13,7 @@\n #include <sys/types.h>\n #include <sys/queue.h>\n \n+#include <rte_string_fns.h>\n #include <rte_byteorder.h>\n #include <rte_log.h>\n #include <rte_debug.h>\n@@ -1362,8 +1363,7 @@ rte_event_pmd_allocate(const char *name, int socket_id)\n \n \t\teventdev->data = eventdev_data;\n \n-\t\tsnprintf(eventdev->data->name, RTE_EVENTDEV_NAME_MAX_LEN,\n-\t\t\t\t\"%s\", name);\n+\t\tstrlcpy(eventdev->data->name, name, RTE_EVENTDEV_NAME_MAX_LEN);\n \n \t\teventdev->data->dev_id = dev_id;\n \t\teventdev->data->socket_id = socket_id;\ndiff --git a/lib/librte_flow_classify/rte_flow_classify.c b/lib/librte_flow_classify/rte_flow_classify.c\nindex fb652a2b7..24f7f7aa0 100644\n--- a/lib/librte_flow_classify/rte_flow_classify.c\n+++ b/lib/librte_flow_classify/rte_flow_classify.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2017 Intel Corporation\n  */\n \n+#include <rte_string_fns.h>\n #include <rte_compat.h>\n #include <rte_flow_classify.h>\n #include \"rte_flow_classify_parse.h\"\n@@ -285,8 +286,7 @@ rte_flow_classifier_create(struct rte_flow_classifier_params *params)\n \t}\n \n \t/* Save input parameters */\n-\tsnprintf(cls->name, RTE_FLOW_CLASSIFIER_MAX_NAME_SZ, \"%s\",\n-\t\t\tparams->name);\n+\tstrlcpy(cls->name, params->name, RTE_FLOW_CLASSIFIER_MAX_NAME_SZ);\n \n \tcls->socket_id = params->socket_id;\n \ndiff --git a/lib/librte_jobstats/rte_jobstats.c b/lib/librte_jobstats/rte_jobstats.c\nindex b64bc53bb..9b8fde5d5 100644\n--- a/lib/librte_jobstats/rte_jobstats.c\n+++ b/lib/librte_jobstats/rte_jobstats.c\n@@ -6,6 +6,7 @@\n #include <stdlib.h>\n #include <errno.h>\n \n+#include <rte_string_fns.h>\n #include <rte_errno.h>\n #include <rte_common.h>\n #include <rte_eal.h>\n@@ -240,7 +241,7 @@ rte_jobstats_init(struct rte_jobstats *job, const char *name,\n \tjob->target = target;\n \tjob->update_period_cb = &default_update_function;\n \trte_jobstats_reset(job);\n-\tsnprintf(job->name, RTE_DIM(job->name), \"%s\", name == NULL ? \"\" : name);\n+\tstrlcpy(job->name, name == NULL ? \"\" : name, RTE_DIM(job->name));\n \tjob->context = NULL;\n \n \treturn 0;\ndiff --git a/lib/librte_latencystats/rte_latencystats.c b/lib/librte_latencystats/rte_latencystats.c\nindex 5715549e4..06c62831b 100644\n--- a/lib/librte_latencystats/rte_latencystats.c\n+++ b/lib/librte_latencystats/rte_latencystats.c\n@@ -7,6 +7,7 @@\n #include <stdbool.h>\n #include <math.h>\n \n+#include <rte_string_fns.h>\n #include <rte_mbuf.h>\n #include <rte_log.h>\n #include <rte_cycles.h>\n@@ -309,8 +310,8 @@ rte_latencystats_get_names(struct rte_metric_name *names, uint16_t size)\n \t\treturn NUM_LATENCY_STATS;\n \n \tfor (i = 0; i < NUM_LATENCY_STATS; i++)\n-\t\tsnprintf(names[i].name, sizeof(names[i].name),\n-\t\t\t\t\"%s\", lat_stats_strings[i].name);\n+\t\tstrlcpy(names[i].name, lat_stats_strings[i].name,\n+\t\t\tsizeof(names[i].name));\n \n \treturn NUM_LATENCY_STATS;\n }\ndiff --git a/lib/librte_member/rte_member.c b/lib/librte_member/rte_member.c\nindex 702c01d3b..fd228f4ba 100644\n--- a/lib/librte_member/rte_member.c\n+++ b/lib/librte_member/rte_member.c\n@@ -4,6 +4,7 @@\n \n #include <string.h>\n \n+#include <rte_string_fns.h>\n #include <rte_eal.h>\n #include <rte_eal_memconfig.h>\n #include <rte_memory.h>\n@@ -132,7 +133,7 @@ rte_member_create(const struct rte_member_parameters *params)\n \t\tRTE_MEMBER_LOG(ERR, \"Create setsummary failed\\n\");\n \t\tgoto error_unlock_exit;\n \t}\n-\tsnprintf(setsum->name, sizeof(setsum->name), \"%s\", params->name);\n+\tstrlcpy(setsum->name, params->name, sizeof(setsum->name));\n \tsetsum->type = params->type;\n \tsetsum->socket_id = params->socket_id;\n \tsetsum->key_len = params->key_len;\ndiff --git a/lib/librte_mempool/rte_mempool_ops.c b/lib/librte_mempool/rte_mempool_ops.c\nindex a27e1fa51..e02eb702c 100644\n--- a/lib/librte_mempool/rte_mempool_ops.c\n+++ b/lib/librte_mempool/rte_mempool_ops.c\n@@ -6,6 +6,7 @@\n #include <stdio.h>\n #include <string.h>\n \n+#include <rte_string_fns.h>\n #include <rte_mempool.h>\n #include <rte_errno.h>\n #include <rte_dev.h>\n@@ -51,7 +52,7 @@ rte_mempool_register_ops(const struct rte_mempool_ops *h)\n \n \tops_index = rte_mempool_ops_table.num_ops++;\n \tops = &rte_mempool_ops_table.ops[ops_index];\n-\tsnprintf(ops->name, sizeof(ops->name), \"%s\", h->name);\n+\tstrlcpy(ops->name, h->name, sizeof(ops->name));\n \tops->alloc = h->alloc;\n \tops->free = h->free;\n \tops->enqueue = h->enqueue;\ndiff --git a/lib/librte_power/power_acpi_cpufreq.c b/lib/librte_power/power_acpi_cpufreq.c\nindex 49325d0e0..5672c594e 100644\n--- a/lib/librte_power/power_acpi_cpufreq.c\n+++ b/lib/librte_power/power_acpi_cpufreq.c\n@@ -12,6 +12,7 @@\n #include <signal.h>\n #include <limits.h>\n \n+#include <rte_string_fns.h>\n #include <rte_memcpy.h>\n #include <rte_atomic.h>\n \n@@ -159,7 +160,7 @@ power_set_governor_userspace(struct rte_power_info *pi)\n \t\tgoto out;\n \t}\n \t/* Save the original governor */\n-\tsnprintf(pi->governor_ori, sizeof(pi->governor_ori), \"%s\", buf);\n+\tstrlcpy(pi->governor_ori, buf, sizeof(pi->governor_ori));\n \n \t/* Write 'userspace' to the governor */\n \tval = fseek(f, 0, SEEK_SET);\ndiff --git a/lib/librte_power/power_pstate_cpufreq.c b/lib/librte_power/power_pstate_cpufreq.c\nindex 61ff8dbb0..336c13869 100644\n--- a/lib/librte_power/power_pstate_cpufreq.c\n+++ b/lib/librte_power/power_pstate_cpufreq.c\n@@ -14,6 +14,7 @@\n #include <errno.h>\n #include <inttypes.h>\n \n+#include <rte_string_fns.h>\n #include <rte_memcpy.h>\n #include <rte_atomic.h>\n \n@@ -349,7 +350,7 @@ power_set_governor_performance(struct pstate_power_info *pi)\n \t\tgoto out;\n \t}\n \t/* Save the original governor */\n-\tsnprintf(pi->governor_ori, sizeof(pi->governor_ori), \"%s\", buf);\n+\tstrlcpy(pi->governor_ori, buf, sizeof(pi->governor_ori));\n \n \t/* Write 'performance' to the governor */\n \tval = fseek(f, 0, SEEK_SET);\ndiff --git a/lib/librte_rawdev/rte_rawdev.c b/lib/librte_rawdev/rte_rawdev.c\nindex 9f1e3592d..2b2f45d7c 100644\n--- a/lib/librte_rawdev/rte_rawdev.c\n+++ b/lib/librte_rawdev/rte_rawdev.c\n@@ -13,6 +13,7 @@\n #include <sys/types.h>\n #include <sys/queue.h>\n \n+#include <rte_string_fns.h>\n #include <rte_byteorder.h>\n #include <rte_log.h>\n #include <rte_debug.h>\n@@ -508,7 +509,7 @@ rte_rawdev_pmd_allocate(const char *name, size_t dev_priv_size, int socket_id)\n \trawdev->dev_id = dev_id;\n \trawdev->socket_id = socket_id;\n \trawdev->started = 0;\n-\tsnprintf(rawdev->name, RTE_RAWDEV_NAME_MAX_LEN, \"%s\", name);\n+\tstrlcpy(rawdev->name, name, RTE_RAWDEV_NAME_MAX_LEN);\n \n \trawdev->attached = RTE_RAWDEV_ATTACHED;\n \trawdev_globals.nb_devs++;\ndiff --git a/lib/librte_reorder/rte_reorder.c b/lib/librte_reorder/rte_reorder.c\nindex ecf539d22..b15328b2e 100644\n--- a/lib/librte_reorder/rte_reorder.c\n+++ b/lib/librte_reorder/rte_reorder.c\n@@ -5,6 +5,7 @@\n #include <inttypes.h>\n #include <string.h>\n \n+#include <rte_string_fns.h>\n #include <rte_log.h>\n #include <rte_mbuf.h>\n #include <rte_eal_memconfig.h>\n@@ -82,7 +83,7 @@ rte_reorder_init(struct rte_reorder_buffer *b, unsigned int bufsize,\n \t}\n \n \tmemset(b, 0, bufsize);\n-\tsnprintf(b->name, sizeof(b->name), \"%s\", name);\n+\tstrlcpy(b->name, name, sizeof(b->name));\n \tb->memsize = bufsize;\n \tb->order_buf.size = b->ready_buf.size = size;\n \tb->order_buf.mask = b->ready_buf.mask = size - 1;\n@@ -161,7 +162,7 @@ rte_reorder_reset(struct rte_reorder_buffer *b)\n \tchar name[RTE_REORDER_NAMESIZE];\n \n \trte_reorder_free_mbufs(b);\n-\tsnprintf(name, sizeof(name), \"%s\", b->name);\n+\tstrlcpy(name, b->name, sizeof(name));\n \t/* No error checking as current values should be valid */\n \trte_reorder_init(b, b->memsize, name, b->order_buf.size);\n }\n",
    "prefixes": [
        "5/5"
    ]
}