Small leak patch
freddyz77 at tin.it
freddyz77 at tin.it
Tue Feb 12 09:01:32 UTC 2008
I discovered a small fd leak in src/common/compat.c:tor_mmap_file
diff
-r -U10 tor-0.1.2.19/src/common/compat.c tor-0.1.2.19.
my/src/common/compat.c
--- tor-0.1.2.19/src/common/compat.c 2008-01-
08 05:45:55.000000000 +0100
+++ tor-0.1.2.19.my/src/common/compat.c
2008-02-12 09:41:24.211311798 +0100
@@ -148,36 +148,35 @@
return
NULL;
}
size = filesize = (size_t) lseek(fd, 0, SEEK_END);
lseek(fd, 0, SEEK_SET);
/* ensure page alignment */
page_size =
getpagesize();
size += (size%page_size) ? page_size-(size%page_size)
: 0;
if (!size) {
+ close(fd);
/* Zero-length file. If we
call mmap on it, it will succeed but
* return NULL, and bad
things will happen. So just fail. */
log_info(LD_FS,"File \"%s\"
is empty. Ignoring.",filename);
return NULL;
}
string = mmap
(0, size, PROT_READ, MAP_PRIVATE, fd, 0);
+ close(fd);
if (string
== MAP_FAILED) {
- close(fd);
log_warn(LD_FS,"Could not mmap
file \"%s\": %s", filename,
strerror(errno));
return
NULL;
}
- close(fd);
-
res = tor_malloc_zero(sizeof
(tor_mmap_impl_t));
res->base.data = string;
res->base.size =
filesize;
res->mapping_size = size;
return &(res->base);
}
/**
Release storage held for a memory mapping. */
void
tor_munmap_file
(tor_mmap_t *handle)
If file is zero fd was not released.
bye
freddy77
More information about the tor-dev
mailing list