readlink() does not terminate string, add a null character at the end
of the string if readlink() succeeds.

Fixes: 9c006c45d0c5 ("raw/ifpga: scan PCIe BDF device tree")

Signed-off-by: Wei Huang <wei.hu...@intel.com>
---
 drivers/raw/ifpga/ifpga_rawdev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/raw/ifpga/ifpga_rawdev.c b/drivers/raw/ifpga/ifpga_rawdev.c
index 0385514..bf0613e 100644
--- a/drivers/raw/ifpga/ifpga_rawdev.c
+++ b/drivers/raw/ifpga/ifpga_rawdev.c
@@ -230,8 +230,9 @@ static int ifpga_rawdev_fill_info(struct ifpga_rawdev 
*ifpga_dev,
        memset(link, 0, sizeof(link));
        memset(link1, 0, sizeof(link1));
        ret = readlink(path, link, (sizeof(link)-1));
-       if (ret == -1)
+       if ((ret < 0) || ((unsigned)ret > (sizeof(link)-1)))
                return -1;
+       link[ret] = 0;   /* terminate string with null character */
        strlcpy(link1, link, sizeof(link1));
        memset(ifpga_dev->parent_bdf, 0, 16);
        point = strlen(link);
-- 
2.7.3

Reply via email to