From: Karel Zak Date: Fri, 20 Sep 2019 11:00:19 +0000 (+0200) Subject: libmount: use fmemopen() in more robust way [coverity scan] X-Git-Tag: v2.35-rc1~209 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=026f7d302066a4e6f5a69dc9818ec3180939f4a3;p=thirdparty%2Futil-linux.git libmount: use fmemopen() in more robust way [coverity scan] Signed-off-by: Karel Zak --- diff --git a/libmount/src/utils.c b/libmount/src/utils.c index 6b731b8af5..ea154f2940 100644 --- a/libmount/src/utils.c +++ b/libmount/src/utils.c @@ -1242,20 +1242,26 @@ success: */ FILE *mnt_get_procfs_memstream(int fd, char **membuf) { - FILE *memf; size_t sz = 0; off_t cur; + *membuf = NULL; + /* in case of error, rewind to the original position */ cur = lseek(fd, 0, SEEK_CUR); - if (read_procfs_file(fd, membuf, &sz) == 0 - && sz > 0 - && (memf = fmemopen(*membuf, sz, "r"))) - return memf; + if (read_procfs_file(fd, membuf, &sz) == 0 && sz > 0) { + FILE *memf = fmemopen(*membuf, sz, "r"); + if (memf) + return memf; /* success */ + + free(membuf); + *membuf = NULL; + } /* error */ - lseek(fd, cur, SEEK_SET); + if (cur != (off_t) -1) + lseek(fd, cur, SEEK_SET); return NULL; } #else