From b0a41060c0c3869679c5886e4447c5542a0272a59a09a2ccc39cd67364e638d1 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 24 Sep 2025 12:23:47 +0300 Subject: [PATCH] Do not leave opened file after mmap --- c/cmd/lib/mmap.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/c/cmd/lib/mmap.c b/c/cmd/lib/mmap.c index 9f53379..7807926 100644 --- a/c/cmd/lib/mmap.c +++ b/c/cmd/lib/mmap.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "mmap.h" @@ -14,11 +15,13 @@ Mmap(unsigned char **buf, size_t *len, const char *path) { int fd = open(path, O_RDONLY | O_CLOEXEC); // NOLINT(hicpp-signed-bitwise) if (fd == -1) { + fprintf(stderr, "open: %s\n", strerror(errno)); return false; } struct stat sb; memset(&sb, 0, sizeof(struct stat)); if (fstat(fd, &sb) != 0) { + fprintf(stderr, "fstat: %s\n", strerror(errno)); return false; } (*len) = (size_t)sb.st_size; @@ -26,7 +29,7 @@ Mmap(unsigned char **buf, size_t *len, const char *path) (*buf) = mmap(NULL, *len, PROT_READ, MAP_SHARED, fd, 0); if ((*buf) == MAP_FAILED) { // NOLINT(performance-no-int-to-ptr) fprintf(stderr, "mmap: %s\n", strerror(errno)); - return false; } - return true; + close(fd); + return (*buf) != MAP_FAILED; // NOLINT(performance-no-int-to-ptr) } -- 2.51.0