From 5bb9c3bdde68294a1f8a0082e9d169929bdbc4b6 Mon Sep 17 00:00:00 2001 From: hselasky Date: Wed, 12 Dec 2018 11:38:00 +0000 Subject: [PATCH] MFC r341540: libibverbs: Fix memory leak in ibv_read_sysfs_file(). Testing packetdrill using valgrind resulted in finding a memory leak in ibv_read_sysfs_file(). The attached patch fixes it. Submitted by: tuexen@ Sponsored by: Mellanox Technologies --- contrib/ofed/libibverbs/sysfs.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/contrib/ofed/libibverbs/sysfs.c b/contrib/ofed/libibverbs/sysfs.c index 0ea19fc8fd8..99ccded3276 100644 --- a/contrib/ofed/libibverbs/sysfs.c +++ b/contrib/ofed/libibverbs/sysfs.c @@ -79,7 +79,7 @@ int ibv_read_sysfs_file(const char *dir, const char *file, char *buf, size_t size) { char *path, *s; - int fd; + int ret; size_t len; if (asprintf(&path, "%s/%s", dir, file) < 0) @@ -89,12 +89,13 @@ int ibv_read_sysfs_file(const char *dir, const char *file, if (*s == '/') *s = '.'; - len = size; - if (sysctlbyname(&path[1], buf, &len, NULL, 0) == -1) - return -1; - + len = size; + ret = sysctlbyname(&path[1], buf, &len, NULL, 0); free(path); + if (ret == -1) + return -1; + if (len > 0 && buf[len - 1] == '\n') buf[--len] = '\0'; -- 2.45.0