[dpdk-dev] bus/pci: fix error in parsing vfio driver

Message ID 1526395251-27894-1-git-send-email-wei.dai@intel.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Wei Dai May 15, 2018, 2:40 p.m. UTC
  In pci_get_kernel_driver_by_path(), the available memory size of
dri_name should be strlen(name + 1) + 1, not the size of the
pointer (8 bytes), so "vfio-pci" is truncated to "vfio-pc"
ended with number 0.
This patch fixes it.

Fixes: fe5f777b5383 ("bus/pci: replace strncpy by strlcpy")
Cc: stable@dpdk.org

Signed-off-by: Wei Dai <wei.dai@intel.com>
---
 drivers/bus/pci/linux/pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Wei Dai May 15, 2018, 3:10 p.m. UTC | #1
Give up this patch as there is already a patch
in http://dpdk.org/dev/patchwork/patch/40030/ bus/pci: correct the earlier strlcpy conversion

> -----Original Message-----
> From: Dai, Wei
> Sent: Tuesday, May 15, 2018 10:41 PM
> To: Yigit, Ferruh <ferruh.yigit@intel.com>; Burakov, Anatoly
> <anatoly.burakov@intel.com>
> Cc: dev@dpdk.org; Dai, Wei <wei.dai@intel.com>; stable@dpdk.org
> Subject: [PATCH] bus/pci: fix error in parsing vfio driver
> 
> In pci_get_kernel_driver_by_path(), the available memory size of dri_name
> should be strlen(name + 1) + 1, not the size of the pointer (8 bytes), so
> "vfio-pci" is truncated to "vfio-pc"
> ended with number 0.
> This patch fixes it.
> 
> Fixes: fe5f777b5383 ("bus/pci: replace strncpy by strlcpy")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Wei Dai <wei.dai@intel.com>
> ---
>  drivers/bus/pci/linux/pci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c index
> a73ee49..cc6b383 100644
> --- a/drivers/bus/pci/linux/pci.c
> +++ b/drivers/bus/pci/linux/pci.c
> @@ -54,7 +54,7 @@ pci_get_kernel_driver_by_path(const char *filename,
> char *dri_name)
> 
>  	name = strrchr(path, '/');
>  	if (name) {
> -		strlcpy(dri_name, name + 1, sizeof(dri_name));
> +		strlcpy(dri_name, name + 1, strlen(name + 1) + 1);
>  		return 0;
>  	}
> 
> --
> 2.5.5
  

Patch

diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c
index a73ee49..cc6b383 100644
--- a/drivers/bus/pci/linux/pci.c
+++ b/drivers/bus/pci/linux/pci.c
@@ -54,7 +54,7 @@  pci_get_kernel_driver_by_path(const char *filename, char *dri_name)
 
 	name = strrchr(path, '/');
 	if (name) {
-		strlcpy(dri_name, name + 1, sizeof(dri_name));
+		strlcpy(dri_name, name + 1, strlen(name + 1) + 1);
 		return 0;
 	}