From patchwork Mon Mar 12 11:33:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 35976 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 58A795F2E; Mon, 12 Mar 2018 12:33:23 +0100 (CET) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 9B4E74CBB for ; Mon, 12 Mar 2018 12:33:21 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Mar 2018 04:33:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,461,1515484800"; d="scan'208";a="181922101" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.223]) by orsmga004.jf.intel.com with ESMTP; 12 Mar 2018 04:33:19 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson Date: Mon, 12 Mar 2018 11:33:00 +0000 Message-Id: <20180312113300.115551-2-bruce.richardson@intel.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180312113300.115551-1-bruce.richardson@intel.com> References: <20180220170727.220340-1-bruce.richardson@intel.com> <20180312113300.115551-1-bruce.richardson@intel.com> Subject: [dpdk-dev] [PATCH 2/2] convert snprintf to strlcpy X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Since we have support for the strlcpy function in DPDK, replace all instances where a string is copied using snprintf. Signed-off-by: Bruce Richardson Reviewed-by: Stephen Hemminger --- app/pdump/main.c | 11 +++++------ app/test-pmd/parameters.c | 5 ++--- drivers/net/bonding/rte_eth_bond_pmd.c | 3 ++- drivers/net/failsafe/failsafe_args.c | 5 +++-- drivers/net/mlx4/mlx4_ethdev.c | 3 ++- drivers/net/mlx5/mlx5_ethdev.c | 3 ++- drivers/net/mrvl/mrvl_qos.c | 2 +- drivers/net/tap/rte_eth_tap.c | 5 +++-- .../ip_pipeline/pipeline/pipeline_flow_classification_be.c | 4 ++-- examples/ip_pipeline/pipeline/pipeline_passthrough_be.c | 4 ++-- examples/load_balancer/config.c | 2 +- lib/librte_cmdline/cmdline_parse.c | 6 +++--- lib/librte_cmdline/cmdline_parse_etheraddr.c | 2 +- lib/librte_cmdline/cmdline_parse_ipaddr.c | 2 +- lib/librte_cmdline/cmdline_parse_portlist.c | 2 +- lib/librte_cmdline/cmdline_parse_string.c | 4 ++-- lib/librte_eal/common/eal_common_bus.c | 3 ++- lib/librte_pdump/rte_pdump.c | 9 +++++---- test/test/test_cmdline_cirbuf.c | 2 +- test/test/test_eal_flags.c | 10 ++++++---- test/test/test_malloc.c | 2 +- 21 files changed, 48 insertions(+), 41 deletions(-) diff --git a/app/pdump/main.c b/app/pdump/main.c index f6865bdbd..d29de0321 100644 --- a/app/pdump/main.c +++ b/app/pdump/main.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #define CMD_LINE_OPT_PDUMP "pdump" @@ -408,17 +409,15 @@ launch_args_parse(int argc, char **argv, char *prgname) if (!strncmp(long_option[option_index].name, CMD_LINE_OPT_SER_SOCK_PATH, sizeof(CMD_LINE_OPT_SER_SOCK_PATH))) { - snprintf(server_socket_path, - sizeof(server_socket_path), "%s", - optarg); + strlcpy(server_socket_path, optarg, + sizeof(server_socket_path)); } if (!strncmp(long_option[option_index].name, CMD_LINE_OPT_CLI_SOCK_PATH, sizeof(CMD_LINE_OPT_CLI_SOCK_PATH))) { - snprintf(client_socket_path, - sizeof(client_socket_path), "%s", - optarg); + strlcpy(client_socket_path, optarg, + sizeof(client_socket_path)); } break; diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 97d22b860..2192bdcdf 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -658,9 +658,8 @@ launch_args_parse(int argc, char** argv) if (!strcmp(lgopts[opt_idx].name, "cmdline-file")) { printf("CLI commands to be read from %s\n", optarg); - snprintf(cmdline_filename, - sizeof(cmdline_filename), "%s", - optarg); + strlcpy(cmdline_filename, optarg, + sizeof(cmdline_filename)); } if (!strcmp(lgopts[opt_idx].name, "auto-start")) { printf("Auto-start selected\n"); diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index c34c3251f..f7e73351e 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "rte_eth_bond.h" #include "rte_eth_bond_private.h" @@ -617,7 +618,7 @@ mode6_debug(const char __attribute__((unused)) *info, struct ether_hdr *eth_h, uint16_t offset = get_vlan_offset(eth_h, ðer_type); #ifdef RTE_LIBRTE_BOND_DEBUG_ALB - snprintf(buf, 16, "%s", info); + strlcpy(buf, info, 16); #endif if (ether_type == rte_cpu_to_be_16(ETHER_TYPE_IPv4)) { diff --git a/drivers/net/failsafe/failsafe_args.c b/drivers/net/failsafe/failsafe_args.c index 366dbea16..ea934f92a 100644 --- a/drivers/net/failsafe/failsafe_args.c +++ b/drivers/net/failsafe/failsafe_args.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "failsafe_private.h" @@ -340,7 +341,7 @@ fs_remove_sub_devices_definition(char params[DEVARGS_MAXLEN]) a = b + 1; } out: - snprintf(params, DEVARGS_MAXLEN, "%s", buffer); + strlcpy(params, buffer, DEVARGS_MAXLEN); return 0; } @@ -392,7 +393,7 @@ failsafe_args_parse(struct rte_eth_dev *dev, const char *params) ret = 0; priv->subs_tx = FAILSAFE_MAX_ETHPORTS; /* default parameters */ - n = snprintf(mut_params, sizeof(mut_params), "%s", params); + n = strlcpy(mut_params, params, sizeof(mut_params)); if (n >= sizeof(mut_params)) { ERROR("Parameter string too long (>=%zu)", sizeof(mut_params)); diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c index 3bc692731..44863183e 100644 --- a/drivers/net/mlx4/mlx4_ethdev.c +++ b/drivers/net/mlx4/mlx4_ethdev.c @@ -39,6 +39,7 @@ #include #include #include +#include #include "mlx4.h" #include "mlx4_flow.h" @@ -120,7 +121,7 @@ mlx4_get_ifname(const struct priv *priv, char (*ifname)[IF_NAMESIZE]) goto try_dev_id; dev_port_prev = dev_port; if (dev_port == (priv->port - 1u)) - snprintf(match, sizeof(match), "%s", name); + strlcpy(match, name, sizeof(match)); } closedir(dir); if (match[0] == '\0') { diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 666507691..0ee2d88ce 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "mlx5.h" #include "mlx5_glue.h" @@ -163,7 +164,7 @@ priv_get_ifname(const struct priv *priv, char (*ifname)[IF_NAMESIZE]) goto try_dev_id; dev_port_prev = dev_port; if (dev_port == (priv->port - 1u)) - snprintf(match, sizeof(match), "%s", name); + strlcpy(match, name, sizeof(match)); } closedir(dir); if (match[0] == '\0') diff --git a/drivers/net/mrvl/mrvl_qos.c b/drivers/net/mrvl/mrvl_qos.c index fbb368131..edc4d92d6 100644 --- a/drivers/net/mrvl/mrvl_qos.c +++ b/drivers/net/mrvl/mrvl_qos.c @@ -190,7 +190,7 @@ get_entry_values(const char *entry, uint8_t *tab, return -1; /* Copy the entry to safely use rte_strsplit(). */ - snprintf(entry_cpy, RTE_DIM(entry_cpy), "%s", entry); + strlcpy(entry_cpy, entry, RTE_DIM(entry_cpy)); /* * If there are more tokens than array size, rte_strsplit will diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index f09db0ea9..fbba9aa63 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -1548,7 +1549,7 @@ set_interface_name(const char *key __rte_unused, char *name = (char *)extra_args; if (value) - snprintf(name, RTE_ETH_NAME_MAX_LEN - 1, "%s", value); + strlcpy(name, value, RTE_ETH_NAME_MAX_LEN - 1); else snprintf(name, RTE_ETH_NAME_MAX_LEN - 1, "%s%d", DEFAULT_TAP_NAME, (tap_unit - 1)); @@ -1564,7 +1565,7 @@ set_remote_iface(const char *key __rte_unused, char *name = (char *)extra_args; if (value) - snprintf(name, RTE_ETH_NAME_MAX_LEN, "%s", value); + strlcpy(name, value, RTE_ETH_NAME_MAX_LEN); return 0; } diff --git a/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c b/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c index 097ec3469..3e26ae86b 100644 --- a/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c +++ b/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "pipeline_flow_classification_be.h" @@ -280,8 +281,7 @@ pipeline_fc_parse_args(struct pipeline_flow_classification *p, "\"%s\" is too long", params->name, arg_name); - snprintf(key_mask_str, mask_str_len + 1, "%s", - arg_value); + strlcpy(key_mask_str, arg_value, mask_str_len + 1); continue; } diff --git a/examples/ip_pipeline/pipeline/pipeline_passthrough_be.c b/examples/ip_pipeline/pipeline/pipeline_passthrough_be.c index b2bbaedda..1c44e75df 100644 --- a/examples/ip_pipeline/pipeline/pipeline_passthrough_be.c +++ b/examples/ip_pipeline/pipeline/pipeline_passthrough_be.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -524,8 +525,7 @@ pipeline_passthrough_parse_args(struct pipeline_passthrough_params *p, "\"%s\" too long", params->name, arg_name); - snprintf(dma_mask_str, mask_str_len + 1, - "%s", arg_value); + strlcpy(dma_mask_str, arg_value, mask_str_len + 1); p->dma_enabled = 1; diff --git a/examples/load_balancer/config.c b/examples/load_balancer/config.c index b5b66368d..972c85c5b 100644 --- a/examples/load_balancer/config.c +++ b/examples/load_balancer/config.c @@ -121,7 +121,7 @@ str_to_unsigned_array( int i, num_splits = 0; /* copy s so we don't modify original string */ - snprintf(str, sizeof(str), "%s", s); + strlcpy(str, s, sizeof(str)); num_splits = rte_strsplit(str, sizeof(str), splits, num_vals, separator); errno = 0; diff --git a/lib/librte_cmdline/cmdline_parse.c b/lib/librte_cmdline/cmdline_parse.c index e88e4e110..961f9befd 100644 --- a/lib/librte_cmdline/cmdline_parse.c +++ b/lib/librte_cmdline/cmdline_parse.c @@ -251,7 +251,7 @@ cmdline_parse(struct cmdline *cl, const char * buf) } #ifdef RTE_LIBRTE_CMDLINE_DEBUG - snprintf(debug_buf, (linelen>64 ? 64 : linelen), "%s", buf); + strlcpy(debug_buf, buf, (linelen > 64 ? 64 : linelen)); debug_printf("Parse line : len=%d, <%s>\n", linelen, debug_buf); #endif @@ -436,7 +436,7 @@ cmdline_complete(struct cmdline *cl, const char *buf, int *state, if ((unsigned)(comp_len + 1) > size) return 0; - snprintf(dst, size, "%s", comp_buf); + strlcpy(dst, comp_buf, size); dst[comp_len] = 0; return 2; } @@ -513,7 +513,7 @@ cmdline_complete(struct cmdline *cl, const char *buf, int *state, continue; } (*state)++; - l=snprintf(dst, size, "%s", tmpbuf); + l=strlcpy(dst, tmpbuf, size); if (l>=0 && token_hdr.ops->get_help) { token_hdr.ops->get_help(token_p, tmpbuf, sizeof(tmpbuf)); diff --git a/lib/librte_cmdline/cmdline_parse_etheraddr.c b/lib/librte_cmdline/cmdline_parse_etheraddr.c index 8d2811926..24e04755c 100644 --- a/lib/librte_cmdline/cmdline_parse_etheraddr.c +++ b/lib/librte_cmdline/cmdline_parse_etheraddr.c @@ -102,7 +102,7 @@ cmdline_parse_etheraddr(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, (token_len != ETHER_ADDRSTRLENSHORT - 1)) return -1; - snprintf(ether_str, token_len+1, "%s", buf); + strlcpy(ether_str, buf, token_len + 1); tmp = my_ether_aton(ether_str); if (tmp == NULL) diff --git a/lib/librte_cmdline/cmdline_parse_ipaddr.c b/lib/librte_cmdline/cmdline_parse_ipaddr.c index ae6ea1007..d34436abc 100644 --- a/lib/librte_cmdline/cmdline_parse_ipaddr.c +++ b/lib/librte_cmdline/cmdline_parse_ipaddr.c @@ -277,7 +277,7 @@ cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res, if (token_len >= INET6_ADDRSTRLEN+4) return -1; - snprintf(ip_str, token_len+1, "%s", buf); + strlcpy(ip_str, buf, token_len + 1); /* convert the network prefix */ if (tk2->ipaddr_data.flags & CMDLINE_IPADDR_NETWORK) { diff --git a/lib/librte_cmdline/cmdline_parse_portlist.c b/lib/librte_cmdline/cmdline_parse_portlist.c index 5952f3438..ad43b522e 100644 --- a/lib/librte_cmdline/cmdline_parse_portlist.c +++ b/lib/librte_cmdline/cmdline_parse_portlist.c @@ -94,7 +94,7 @@ cmdline_parse_portlist(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, if (token_len >= PORTLIST_TOKEN_SIZE) return -1; - snprintf(portlist_str, token_len+1, "%s", buf); + strlcpy(portlist_str, buf, token_len + 1); if (pl) { pl->map = 0; diff --git a/lib/librte_cmdline/cmdline_parse_string.c b/lib/librte_cmdline/cmdline_parse_string.c index abde0412a..9cf41d0f7 100644 --- a/lib/librte_cmdline/cmdline_parse_string.c +++ b/lib/librte_cmdline/cmdline_parse_string.c @@ -125,10 +125,10 @@ cmdline_parse_string(cmdline_parse_token_hdr_t *tk, const char *buf, void *res, if (res) { if ((sd->str != NULL) && (strcmp(sd->str, TOKEN_STRING_MULTI) == 0)) /* we are sure that token_len is < STR_MULTI_TOKEN_SIZE-1 */ - snprintf(res, STR_MULTI_TOKEN_SIZE, "%s", buf); + strlcpy(res, buf, STR_MULTI_TOKEN_SIZE); else /* we are sure that token_len is < STR_TOKEN_SIZE-1 */ - snprintf(res, STR_TOKEN_SIZE, "%s", buf); + strlcpy(res, buf, STR_TOKEN_SIZE); *((char *)res + token_len) = 0; } diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c index 3e022d510..0943851cc 100644 --- a/lib/librte_eal/common/eal_common_bus.c +++ b/lib/librte_eal/common/eal_common_bus.c @@ -36,6 +36,7 @@ #include #include +#include #include "eal_private.h" @@ -212,7 +213,7 @@ rte_bus_find_by_device_name(const char *str) char name[RTE_DEV_NAME_MAX_LEN]; char *c; - snprintf(name, sizeof(name), "%s", str); + strlcpy(name, str, sizeof(name)); c = strchr(name, ','); if (c != NULL) c[0] = '\0'; diff --git a/lib/librte_pdump/rte_pdump.c b/lib/librte_pdump/rte_pdump.c index ec8a5d84c..41a9deeba 100644 --- a/lib/librte_pdump/rte_pdump.c +++ b/lib/librte_pdump/rte_pdump.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "rte_pdump.h" @@ -401,9 +402,9 @@ pdump_get_socket_path(char *buffer, int bufsz, enum rte_pdump_socktype type) int ret = 0; if (type == RTE_PDUMP_SOCKET_SERVER && server_socket_dir[0] != 0) - snprintf(dir, sizeof(dir), "%s", server_socket_dir); + strlcpy(dir, server_socket_dir, sizeof(dir)); else if (type == RTE_PDUMP_SOCKET_CLIENT && client_socket_dir[0] != 0) - snprintf(dir, sizeof(dir), "%s", client_socket_dir); + strlcpy(dir, client_socket_dir, sizeof(dir)); else { if (getuid() != 0) { dir_home = getenv(SOCKET_PATH_HOME); @@ -891,10 +892,10 @@ rte_pdump_set_socket_dir(const char *path, enum rte_pdump_socktype type) if (path != NULL) { if (type == RTE_PDUMP_SOCKET_SERVER) { count = sizeof(server_socket_dir); - ret = snprintf(server_socket_dir, count, "%s", path); + ret = strlcpy(server_socket_dir, path, count); } else { count = sizeof(client_socket_dir); - ret = snprintf(client_socket_dir, count, "%s", path); + ret = strlcpy(client_socket_dir, path, count); } if (ret < 0 || ret >= count) { diff --git a/test/test/test_cmdline_cirbuf.c b/test/test/test_cmdline_cirbuf.c index e9193f66c..8ac326cb0 100644 --- a/test/test/test_cmdline_cirbuf.c +++ b/test/test/test_cmdline_cirbuf.c @@ -483,7 +483,7 @@ test_cirbuf_string_get_del_partial(void) memset(tmp, 0, sizeof(tmp)); memset(tmp2, 0, sizeof(tmp)); - snprintf(tmp2, sizeof(tmp2), "%s", CIRBUF_STR_HEAD); + strlcpy(tmp2, CIRBUF_STR_HEAD, sizeof(tmp2)); /* * initialize circular buffer diff --git a/test/test/test_eal_flags.c b/test/test/test_eal_flags.c index 37c42efe8..93eb7a481 100644 --- a/test/test/test_eal_flags.c +++ b/test/test/test_eal_flags.c @@ -1151,11 +1151,12 @@ test_memory_flags(void) /* add one extra socket */ for (i = 0; i < num_sockets + 1; i++) { snprintf(buf, sizeof(buf), "%s%s", invalid_socket_mem, DEFAULT_MEM_SIZE); - snprintf(invalid_socket_mem, sizeof(invalid_socket_mem), "%s", buf); + strlcpy(invalid_socket_mem, buf, sizeof(invalid_socket_mem)); if (num_sockets + 1 - i > 1) { snprintf(buf, sizeof(buf), "%s,", invalid_socket_mem); - snprintf(invalid_socket_mem, sizeof(invalid_socket_mem), "%s", buf); + strlcpy(invalid_socket_mem, buf, + sizeof(invalid_socket_mem)); } } @@ -1167,11 +1168,12 @@ test_memory_flags(void) /* add one extra socket */ for (i = 0; i < num_sockets; i++) { snprintf(buf, sizeof(buf), "%s%s", valid_socket_mem, DEFAULT_MEM_SIZE); - snprintf(valid_socket_mem, sizeof(valid_socket_mem), "%s", buf); + strlcpy(valid_socket_mem, buf, sizeof(valid_socket_mem)); if (num_sockets - i > 1) { snprintf(buf, sizeof(buf), "%s,", valid_socket_mem); - snprintf(valid_socket_mem, sizeof(valid_socket_mem), "%s", buf); + strlcpy(valid_socket_mem, buf, + sizeof(valid_socket_mem)); } } diff --git a/test/test/test_malloc.c b/test/test/test_malloc.c index d23192cf1..ccc5feaec 100644 --- a/test/test/test_malloc.c +++ b/test/test/test_malloc.c @@ -378,7 +378,7 @@ test_realloc(void) printf("NULL pointer returned from rte_zmalloc\n"); return -1; } - snprintf(ptr1, size1, "%s" ,hello_str); + strlcpy(ptr1, hello_str, size1); char *ptr2 = rte_realloc(ptr1, size2, RTE_CACHE_LINE_SIZE); if (!ptr2){ rte_free(ptr1);