git: 408572a24e55 - main - libnvmf: avoid resource leak
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 21 May 2024 23:42:57 UTC
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=408572a24e55a4c9ff9f81d1403ec0e055841264 commit 408572a24e55a4c9ff9f81d1403ec0e055841264 Author: Pierre Pronchery <pierre@freebsdfoundation.org> AuthorDate: 2024-05-16 14:34:34 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2024-05-21 23:41:04 +0000 libnvmf: avoid resource leak In nvmf_host_fetch_discovery_log_page(), the log variable may have been allocated on the heap during the first loop cycle, and should be free()'d before exiting upon errors. Reported by: Coverity CID: 1545034 Sponsored by: The FreeBSD Foundation Reviewed by: imp,jhb Pull Request: https://github.com/freebsd/freebsd-src/pull/1239 --- lib/libnvmf/nvmf_host.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/libnvmf/nvmf_host.c b/lib/libnvmf/nvmf_host.c index b78e2af65897..a0d95470d8ee 100644 --- a/lib/libnvmf/nvmf_host.c +++ b/lib/libnvmf/nvmf_host.c @@ -653,19 +653,23 @@ nvmf_host_fetch_discovery_log_page(struct nvmf_qpair *qp, log = NULL; for (;;) { error = nvmf_get_discovery_log_page(qp, 0, &hdr, sizeof(hdr)); - if (error != 0) + if (error != 0) { + free(log); return (error); + } nvme_discovery_log_swapbytes(&hdr); if (hdr.recfmt != 0) { printf("NVMF: Unsupported discovery log format: %d\n", hdr.recfmt); + free(log); return (EINVAL); } if (hdr.numrec > 1024) { printf("NVMF: Too many discovery log entries: %ju\n", (uintmax_t)hdr.numrec); + free(log); return (EFBIG); }