[Forensics-changes] [yara] 128/415: Fix file handle leak
Hilko Bengen
bengen at moszumanska.debian.org
Thu Apr 3 05:42:54 UTC 2014
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to branch debian
in repository yara.
commit c8f1e4f40791ba16b5c93c85ffef610a5212b29c
Author: Victor M. Alvarez <plusvic at gmail.com>
Date: Fri Apr 27 10:07:46 2012 +0000
Fix file handle leak
---
libyara/filemap.c | 158 +++++++++++++++++++++++++++---------------------------
1 file changed, 80 insertions(+), 78 deletions(-)
diff --git a/libyara/filemap.c b/libyara/filemap.c
index 25fe9ea..a5fbfff 100755
--- a/libyara/filemap.c
+++ b/libyara/filemap.c
@@ -34,54 +34,55 @@ GNU General Public License for more details.
int map_file(const char* file_path, MAPPED_FILE* pmapped_file)
{
- if (file_path == NULL)
- return ERROR_INVALID_ARGUMENT;
-
- pmapped_file->file = CreateFile( file_path,
- GENERIC_READ,
- FILE_SHARE_READ,
- NULL,
- OPEN_EXISTING,
- FILE_FLAG_SEQUENTIAL_SCAN,
- NULL );
-
- if (pmapped_file->file == INVALID_HANDLE_VALUE)
- {
- return ERROR_COULD_NOT_OPEN_FILE;
- }
-
- pmapped_file->size = GetFileSize(pmapped_file->file, NULL);
-
- if (pmapped_file->size == 0)
- {
- return ERROR_ZERO_LENGTH_FILE;
- }
-
- pmapped_file->mapping = CreateFileMapping(pmapped_file->file, NULL, PAGE_READONLY, 0, 0, NULL);
-
- if (pmapped_file->mapping == INVALID_HANDLE_VALUE)
- {
- CloseHandle(pmapped_file->file);
- return ERROR_COULD_NOT_MAP_FILE;
- }
-
- pmapped_file->data = (unsigned char*) MapViewOfFile(pmapped_file->mapping, FILE_MAP_READ, 0, 0, 0);
-
- if (pmapped_file->data == NULL)
- {
- CloseHandle(pmapped_file->mapping);
- CloseHandle(pmapped_file->file);
- return ERROR_COULD_NOT_MAP_FILE;
- }
-
- return ERROR_SUCCESS;
+ if (file_path == NULL)
+ return ERROR_INVALID_ARGUMENT;
+
+ pmapped_file->file = CreateFile( file_path,
+ GENERIC_READ,
+ FILE_SHARE_READ,
+ NULL,
+ OPEN_EXISTING,
+ FILE_FLAG_SEQUENTIAL_SCAN,
+ NULL );
+
+ if (pmapped_file->file == INVALID_HANDLE_VALUE)
+ {
+ return ERROR_COULD_NOT_OPEN_FILE;
+ }
+
+ pmapped_file->size = GetFileSize(pmapped_file->file, NULL);
+
+ if (pmapped_file->size == 0)
+ {
+ CloseHandle(pmapped_file->file);
+ return ERROR_ZERO_LENGTH_FILE;
+ }
+
+ pmapped_file->mapping = CreateFileMapping(pmapped_file->file, NULL, PAGE_READONLY, 0, 0, NULL);
+
+ if (pmapped_file->mapping == INVALID_HANDLE_VALUE)
+ {
+ CloseHandle(pmapped_file->file);
+ return ERROR_COULD_NOT_MAP_FILE;
+ }
+
+ pmapped_file->data = (unsigned char*) MapViewOfFile(pmapped_file->mapping, FILE_MAP_READ, 0, 0, 0);
+
+ if (pmapped_file->data == NULL)
+ {
+ CloseHandle(pmapped_file->mapping);
+ CloseHandle(pmapped_file->file);
+ return ERROR_COULD_NOT_MAP_FILE;
+ }
+
+ return ERROR_SUCCESS;
}
void unmap_file(MAPPED_FILE* pmapped_file)
{
- UnmapViewOfFile(pmapped_file->data);
- CloseHandle(pmapped_file->mapping);
- CloseHandle(pmapped_file->file);
+ UnmapViewOfFile(pmapped_file->data);
+ CloseHandle(pmapped_file->mapping);
+ CloseHandle(pmapped_file->file);
}
#else
@@ -92,45 +93,46 @@ void unmap_file(MAPPED_FILE* pmapped_file)
int map_file(const char* file_path, MAPPED_FILE* pmapped_file)
{
- struct stat fstat;
-
- if (file_path == NULL)
- return ERROR_INVALID_ARGUMENT;
-
- if (stat(file_path,&fstat) != 0 || S_ISDIR(fstat.st_mode))
- {
- return ERROR_COULD_NOT_OPEN_FILE;
- }
+ struct stat fstat;
+
+ if (file_path == NULL)
+ return ERROR_INVALID_ARGUMENT;
+
+ if (stat(file_path,&fstat) != 0 || S_ISDIR(fstat.st_mode))
+ {
+ return ERROR_COULD_NOT_OPEN_FILE;
+ }
- pmapped_file->file = open(file_path, O_RDONLY);
-
- if (pmapped_file->file == -1)
- {
- return ERROR_COULD_NOT_OPEN_FILE;
- }
-
- pmapped_file->size = fstat.st_size;
-
- if (pmapped_file->size == 0)
- {
- return ERROR_ZERO_LENGTH_FILE;
- }
-
- pmapped_file->data = (unsigned char*) mmap(0, pmapped_file->size, PROT_READ, MAP_PRIVATE, pmapped_file->file, 0);
-
- if (pmapped_file->data == MAP_FAILED)
- {
- close(pmapped_file->file);
- return ERROR_COULD_NOT_MAP_FILE;
- }
-
- return ERROR_SUCCESS;
+ pmapped_file->file = open(file_path, O_RDONLY);
+
+ if (pmapped_file->file == -1)
+ {
+ return ERROR_COULD_NOT_OPEN_FILE;
+ }
+
+ pmapped_file->size = fstat.st_size;
+
+ if (pmapped_file->size == 0)
+ {
+ close(pmapped_file->file);
+ return ERROR_ZERO_LENGTH_FILE;
+ }
+
+ pmapped_file->data = (unsigned char*) mmap(0, pmapped_file->size, PROT_READ, MAP_PRIVATE, pmapped_file->file, 0);
+
+ if (pmapped_file->data == MAP_FAILED)
+ {
+ close(pmapped_file->file);
+ return ERROR_COULD_NOT_MAP_FILE;
+ }
+
+ return ERROR_SUCCESS;
}
void unmap_file(MAPPED_FILE* pmapped_file)
{
- munmap(pmapped_file->data, pmapped_file->size);
- close(pmapped_file->file);
+ munmap(pmapped_file->data, pmapped_file->size);
+ close(pmapped_file->file);
}
#endif
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/forensics/yara.git
More information about the forensics-changes
mailing list