[Forensics-changes] [yara] 93/160: Mutex lock on is_loaded bitmask
Hilko Bengen
bengen at moszumanska.debian.org
Sat Jul 1 10:29:22 UTC 2017
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to annotated tag v3.4.0
in repository yara.
commit 85116f2809101e86d5999db7b4060a0e94ff8a33
Author: Shane Huntley <shuntley at google.com>
Date: Tue Apr 28 11:37:37 2015 -0700
Mutex lock on is_loaded bitmask
---
libyara/modules.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/libyara/modules.c b/libyara/modules.c
index 220cac5..ab0936d 100644
--- a/libyara/modules.c
+++ b/libyara/modules.c
@@ -55,11 +55,37 @@ YR_MODULE yr_modules_table[] =
#undef MODULE
+mutex_t yr_modules_mutex;
+
+void _yr_modules_lock()
+{
+ #ifdef _WIN32
+ WaitForSingleObject(yr_modules_mutex, INFINITE);
+ #else
+ pthread_mutex_lock(&yr_modules_mutex);
+ #endif
+}
+
+void _yr_modules_unlock()
+{
+ #ifdef _WIN32
+ ReleaseMutex(yr_modules_mutex);
+ #else
+ pthread_mutex_unlock(&yr_modules_mutex);
+ #endif
+}
+
int yr_modules_initialize()
{
int i, result;
+ #if _WIN32
+ yr_modules_mutex = CreateMutex(NULL, FALSE, NULL);
+ #else
+ pthread_mutex_init(&yr_modules_mutex, NULL);
+ #endif
+
for (i = 0; i < sizeof(yr_modules_table) / sizeof(YR_MODULE); i++)
{
result = yr_modules_table[i].initialize(&yr_modules_table[i]);
@@ -76,6 +102,12 @@ int yr_modules_finalize()
{
int i, result;
+ #if _WIN32
+ CloseHandle(yr_modules_mutex);
+ #else
+ pthread_mutex_destroy(&yr_modules_mutex);
+ #endif
+
for (i = 0; i < sizeof(yr_modules_table) / sizeof(YR_MODULE); i++)
{
result = yr_modules_table[i].finalize(&yr_modules_table[i]);
@@ -169,8 +201,9 @@ int yr_modules_load(
if (result != ERROR_SUCCESS)
return result;
-
+ _yr_modules_lock();
yr_modules_table[i].is_loaded |= 1 << yr_get_tidx();
+ _yr_modules_unlock();
}
}
@@ -197,7 +230,9 @@ int yr_modules_unload_all(
assert(module_structure != NULL);
yr_modules_table[i].unload(module_structure);
+ _yr_modules_lock();
yr_modules_table[i].is_loaded &= ~tidx_mask;
+ _yr_modules_unlock();
}
}
--
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