[Forensics-changes] [yara] 225/415: Fix bug reported by @msuvajac and other issues relating to TSL finalization
Hilko Bengen
bengen at moszumanska.debian.org
Thu Apr 3 05:43:08 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 4e58b940bd4d4e3157dfd13c86f2628bbe13bc56
Author: Victor M. Alvarez <plusvic at gmail.com>
Date: Fri Nov 15 13:51:55 2013 +0000
Fix bug reported by @msuvajac and other issues relating to TSL finalization
---
libyara/Makefile.am | 2 +-
libyara/libyara.c | 37 ++++++++++++++++++++++++++++++++++++-
libyara/re.c | 31 +++++++++++++++++++++++++++++++
libyara/re.h | 2 ++
libyara/yara.h | 3 +++
5 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/libyara/Makefile.am b/libyara/Makefile.am
index 09eefbc..b345962 100644
--- a/libyara/Makefile.am
+++ b/libyara/Makefile.am
@@ -1,6 +1,6 @@
AM_YFLAGS=-d
-AM_CFLAGS=-g -O4 -std=gnu99
+AM_CFLAGS=-g -O0 -std=gnu99
ACLOCAL_AMFLAGS=-I m4
diff --git a/libyara/libyara.c b/libyara/libyara.c
index 8074ea4..019b8fc 100644
--- a/libyara/libyara.c
+++ b/libyara/libyara.c
@@ -40,6 +40,13 @@ pthread_key_t key;
#endif
+//
+// yr_initialize
+//
+// Should be called by main thread before using any other
+// function from libyara.
+//
+
void yr_initialize(void)
{
int i;
@@ -56,13 +63,41 @@ void yr_initialize(void)
#endif
yr_re_initialize();
+}
+
+//
+// yr_finalize_thread
+//
+// Should be called by ALL threads using libyara before exiting.
+//
+
+void yr_finalize_thread(void)
+{
+ yr_re_finalize_thread();
}
+
+//
+// yr_finalize
+//
+// Should be called by main thread before exiting. Main thread doesn't
+// need to explicitely call yr_finalize_thread because yr_finalize already
+// calls it.
+//
+
void yr_finalize(void)
{
- yr_heap_free();
+ yr_re_finalize_thread();
+
+ #ifdef WIN32
+ TlsFree(key);
+ #else
+ pthread_key_delete(key);
+ #endif
+
yr_re_finalize();
+ yr_heap_free();
}
//
diff --git a/libyara/re.c b/libyara/re.c
index a2e1eed..6165f5d 100644
--- a/libyara/re.c
+++ b/libyara/re.c
@@ -123,6 +123,13 @@ extern int yr_parse_hex_string(
RE** re);
+//
+// yr_re_initialize
+//
+// Should be called by main thread before any other
+// function from this module.
+//
+
int yr_re_initialize()
{
#ifdef WIN32
@@ -134,9 +141,33 @@ int yr_re_initialize()
return ERROR_SUCCESS;
}
+//
+// yr_re_finalize
+//
+// Should be called by main thread after every other thread
+// stopped using functions from this module.
+//
int yr_re_finalize()
{
+ #ifdef WIN32
+ TlsFree(thread_storage_key);
+ #else
+ pthread_key_delete(thread_storage_key);
+ #endif
+
+ return ERROR_SUCCESS;
+}
+
+//
+// yr_re_finalize_thread
+//
+// Should be called by every thread using this module
+// before exiting.
+//
+
+int yr_re_finalize_thread()
+{
RE_THREAD_STORAGE* thread_storage;
#ifdef WIN32
diff --git a/libyara/re.h b/libyara/re.h
index 037172d..72d2519 100644
--- a/libyara/re.h
+++ b/libyara/re.h
@@ -168,4 +168,6 @@ int yr_re_initialize();
int yr_re_finalize();
+int yr_re_finalize_thread();
+
#endif
diff --git a/libyara/yara.h b/libyara/yara.h
index 0499a71..ada8645 100644
--- a/libyara/yara.h
+++ b/libyara/yara.h
@@ -566,6 +566,9 @@ void yr_initialize(void);
void yr_finalize(void);
+void yr_finalize_thread(void);
+
+
int yr_get_tidx(void);
--
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