[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