From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 83BC8A00E6 for ; Thu, 21 Mar 2019 11:10:44 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5E56B1B49B; Thu, 21 Mar 2019 11:10:44 +0100 (CET) Received: from mail-it1-f195.google.com (mail-it1-f195.google.com [209.85.166.195]) by dpdk.org (Postfix) with ESMTP id A03584C96 for ; Thu, 21 Mar 2019 11:10:42 +0100 (CET) Received: by mail-it1-f195.google.com with SMTP id m137so3433722ita.0 for ; Thu, 21 Mar 2019 03:10:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=tNuuV0mmw95DJkYvMmCsSVupK3aB+8BNxvloub9w/uM=; b=0UwKtd4p8G2rzAZEIl0bCaPso7KCr3avKAr2WpKz6fxzi++skd9cf3Gx/8kkf12Yq6 Vvm+tAEUAzkGBkD5RreQUK+1gLd9/zcc59u57QrurjCmegNacI9qf4jibyeow43pJBmv 7s/epniWgwaLFELFJ6LoX+8o/GCqCE/8ECDUE/4el8fzzgsxLvzwaD8cUX5AD5syCo+h YCODabB+Imp6Sw7BsiB7hP5k/pBYhO/eJ5HX/NUY5sDaGD/pUzRkYe/vRav+wrPgDRlA gbfcPpJw+CMlNFO7nlUICVnYOaw2LpG4l9TFcKgFquq/Pf/EjffaRyDoQ1FHvASkXsk0 kJ9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tNuuV0mmw95DJkYvMmCsSVupK3aB+8BNxvloub9w/uM=; b=h1ml8BUlGi10C6Wk09Y56IQEkPx1xMBJLkWqE4z/nVkl0G69NgwHavuxNTLN7UIezj PTNztKiE36d4Lwaq0BCBQPlnMLyYQBQrn4PG9DA2nIEjjrZHuLfOwQ8qZWRzXWvG2uF+ ZFLm9kIlUHpcEFV44ytnmgge71nngcr/RUG1Sl1RNAfhrgXAcxgz3m7WV5ER13sAEzWG GwDsx1T1LgVLe/J7ppfvExJpx8A7996/YJR7pxEaXc3z1t5V8a7SoWU4ah4Ija7RUIf8 Qe/YSSgx80pCHVGMmMRFqbg52oLCHT532hiqdev/QVYyt5HUzqZGa3odySkhz8uRMKNE 7a6g== X-Gm-Message-State: APjAAAWeV6u8Hz8xrbRTEplCjkEHhCl1tcC9NPkDj0Ctt+vjGwYMrVrM FJyCPUHlzMiji++t94ROsBEJq+Hyt5g2E5TPtsAvKeVc X-Google-Smtp-Source: APXvYqzAXIOQx6dCiAU/qH25Ftgyp6l6gmSTzk/Dj7bPmgLW2J0SapQPr48ZBtw7EQ6znL7iYpj6MmE6JUx7nHwpXIM= X-Received: by 2002:a02:8a0c:: with SMTP id j12mr1976212jak.119.1553163041997; Thu, 21 Mar 2019 03:10:41 -0700 (PDT) MIME-Version: 1.0 References: <1552040885-15275-1-git-send-email-pallantlax.poornima@intel.com> <9d7768f6-b285-a420-1a3c-ae2fd39b256c@intel.com> In-Reply-To: <9d7768f6-b285-a420-1a3c-ae2fd39b256c@intel.com> From: Alejandro Lucero Date: Thu, 21 Mar 2019 10:10:31 +0000 Message-ID: To: Ferruh Yigit Cc: Pallantla Poornima , dev , reshma.pattan@intel.com, dpdk stable Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v2] net/nfp: fix possible buffer overflow 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" Message-ID: <20190321101031.pPhLsGRyexUj_YR3iZEKZ8p7K-Gz3NRemztBH0jB9cQ@z> On Tue, Mar 19, 2019 at 5:43 PM Ferruh Yigit wrote: > On 3/12/2019 9:56 AM, Alejandro Lucero wrote: > > On Fri, Mar 8, 2019 at 10:28 AM Pallantla Poornima < > > pallantlax.poornima@intel.com> wrote: > > > >> sprintf function is not secure as it doesn't check the length of string. > >> More secure function snprintf is used. > >> > >> Fixes: 896c265ef9 ("net/nfp: use new CPP interface") > >> Fixes: c4171b520b ("net/nfp: support PF multiport") > >> Cc: stable@dpdk.org > >> > >> Signed-off-by: Pallantla Poornima > >> --- > >> v2: updated title as suggested. > >> --- > >> drivers/net/nfp/nfp_net.c | 20 ++++++++++++-------- > >> 1 file changed, 12 insertions(+), 8 deletions(-) > >> > >> diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c > >> index a791e95e2..f63def5ef 100644 > >> --- a/drivers/net/nfp/nfp_net.c > >> +++ b/drivers/net/nfp/nfp_net.c > >> @@ -3318,9 +3318,9 @@ nfp_pf_create_dev(struct rte_pci_device *dev, int > >> port, int ports, > >> return -ENOMEM; > >> > >> if (ports > 1) > >> - sprintf(port_name, "%s_port%d", dev->device.name, > port); > >> + snprintf(port_name, 100, "%s_port%d", dev->device.name, > >> port); > >> else > >> - sprintf(port_name, "%s", dev->device.name); > >> + strlcat(port_name, dev->device.name, 100); > >> > >> > >> if (rte_eal_process_type() == RTE_PROC_PRIMARY) { > >> @@ -3433,12 +3433,14 @@ nfp_fw_upload(struct rte_pci_device *dev, struct > >> nfp_nsp *nsp, char *card) > >> /* Looking for firmware file in order of priority */ > >> > >> /* First try to find a firmware image specific for this device > */ > >> - sprintf(serial, > "serial-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x", > >> + snprintf(serial, sizeof(serial), > >> + > "serial-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x", > >> cpp->serial[0], cpp->serial[1], cpp->serial[2], > >> cpp->serial[3], > >> cpp->serial[4], cpp->serial[5], cpp->interface >> 8, > >> cpp->interface & 0xff); > >> > >> - sprintf(fw_name, "%s/%s.nffw", DEFAULT_FW_PATH, serial); > >> + snprintf(fw_name, sizeof(fw_name), "%s/%s.nffw", > DEFAULT_FW_PATH, > >> + serial); > >> > >> PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); > >> fw_f = open(fw_name, O_RDONLY); > >> @@ -3446,7 +3448,8 @@ nfp_fw_upload(struct rte_pci_device *dev, struct > >> nfp_nsp *nsp, char *card) > >> goto read_fw; > >> > >> /* Then try the PCI name */ > >> - sprintf(fw_name, "%s/pci-%s.nffw", DEFAULT_FW_PATH, dev-> > >> device.name); > >> + snprintf(fw_name, sizeof(fw_name), "%s/pci-%s.nffw", > >> DEFAULT_FW_PATH, > >> + dev->device.name); > >> > >> PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); > >> fw_f = open(fw_name, O_RDONLY); > >> @@ -3454,7 +3457,7 @@ nfp_fw_upload(struct rte_pci_device *dev, struct > >> nfp_nsp *nsp, char *card) > >> goto read_fw; > >> > >> /* Finally try the card type and media */ > >> - sprintf(fw_name, "%s/%s", DEFAULT_FW_PATH, card); > >> + snprintf(fw_name, sizeof(fw_name), "%s/%s", DEFAULT_FW_PATH, > card); > >> PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); > >> fw_f = open(fw_name, O_RDONLY); > >> if (fw_f < 0) { > >> @@ -3530,8 +3533,9 @@ nfp_fw_setup(struct rte_pci_device *dev, struct > >> nfp_cpp *cpp, > >> > >> PMD_DRV_LOG(INFO, "Port speed: %u", > nfp_eth_table->ports[0].speed); > >> > >> - sprintf(card_desc, "nic_%s_%dx%d.nffw", nfp_fw_model, > >> - nfp_eth_table->count, nfp_eth_table->ports[0].speed / > >> 1000); > >> + snprintf(card_desc, sizeof(card_desc), "nic_%s_%dx%d.nffw", > >> + nfp_fw_model, nfp_eth_table->count, > >> + nfp_eth_table->ports[0].speed / 1000); > >> > >> nsp = nfp_nsp_open(cpp); > >> if (!nsp) { > >> -- > >> 2.17.2 > >> > >> > > I got a compilation error when applying this patch: strlcat can not be > > found. > > > > I guess this patch requires to check for system libraries versions. > > > > Hi Alejandro, > > Hi Ferruh, > Linux doesn't have the 'strlcat' but there is DPDK implementation of it, > comes > with '#include ' header which is already included in > this file. > > 'strlcat' support is added in this release, 19.05, can you be using an old > code? > Can you please double check the build with the latest code? > > I have tried again with tip DPDK and it works fine. I would say I used also tip the first time, but anyway, it compiles now without problem. I have also performed some basic tests and it is all fine. So: Acked-by: Alejandro Lucero Tested-by: Alejandro Lucero Thanks! > Thanks, > ferruh >