[Forensics-changes] [yara] 112/135: Improve error handling
Hilko Bengen
bengen at moszumanska.debian.org
Sat Jul 1 10:27:38 UTC 2017
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to annotated tag v3.1.0
in repository yara.
commit f56608c51753ad885fff6af7f660828bcb3a2ec1
Author: Victor M. Alvarez <plusvic at gmail.com>
Date: Thu Aug 21 13:26:57 2014 +0200
Improve error handling
---
libyara/include/yara/libyara.h | 4 ++--
libyara/include/yara/mem.h | 4 ++--
libyara/libyara.c | 21 +++++++++++++--------
libyara/mem.c | 27 ++++++++++++++++++++-------
yara-python/yara-python.c | 6 +++++-
yara.c | 9 ++++++++-
yarac.c | 5 ++++-
7 files changed, 54 insertions(+), 22 deletions(-)
diff --git a/libyara/include/yara/libyara.h b/libyara/include/yara/libyara.h
index 419a601..f4b5445 100644
--- a/libyara/include/yara/libyara.h
+++ b/libyara/include/yara/libyara.h
@@ -17,10 +17,10 @@ limitations under the License.
#ifndef YR_LIBYARA_H
#define YR_LIBYARA_H
-void yr_initialize(void);
+int yr_initialize(void);
-void yr_finalize(void);
+int yr_finalize(void);
void yr_finalize_thread(void);
diff --git a/libyara/include/yara/mem.h b/libyara/include/yara/mem.h
index 6d26e74..0c2aaa1 100644
--- a/libyara/include/yara/mem.h
+++ b/libyara/include/yara/mem.h
@@ -47,9 +47,9 @@ char* yr_strdup(
#endif
-void yr_heap_alloc();
+int yr_heap_alloc();
-void yr_heap_free();
+int yr_heap_free();
#endif
diff --git a/libyara/libyara.c b/libyara/libyara.c
index cfa5991..4a51153 100644
--- a/libyara/libyara.c
+++ b/libyara/libyara.c
@@ -18,6 +18,7 @@ limitations under the License.
#include <stdio.h>
#include <ctype.h>
+#include <yara/error.h>
#include <yara/mem.h>
#include <yara/re.h>
#include <yara/modules.h>
@@ -49,7 +50,7 @@ char altercase[256];
// function from libyara.
//
-void yr_initialize(void)
+int yr_initialize(void)
{
int i;
@@ -65,7 +66,7 @@ void yr_initialize(void)
lowercase[i] = tolower(i);
}
- yr_heap_alloc();
+ FAIL_ON_ERROR(yr_heap_alloc());
#ifdef _WIN32
tidx_key = TlsAlloc();
@@ -75,8 +76,10 @@ void yr_initialize(void)
pthread_key_create(&recovery_state_key, NULL);
#endif
- yr_re_initialize();
- yr_modules_initialize();
+ FAIL_ON_ERROR(yr_re_initialize());
+ FAIL_ON_ERROR(yr_modules_initialize());
+
+ return ERROR_SUCCESS;
}
@@ -100,7 +103,7 @@ void yr_finalize_thread(void)
// calls it.
//
-void yr_finalize(void)
+int yr_finalize(void)
{
yr_re_finalize_thread();
@@ -112,9 +115,11 @@ void yr_finalize(void)
pthread_key_delete(recovery_state_key);
#endif
- yr_re_finalize();
- yr_modules_finalize();
- yr_heap_free();
+ FAIL_ON_ERROR(yr_re_finalize());
+ FAIL_ON_ERROR(yr_modules_finalize());
+ FAIL_ON_ERROR(yr_heap_free());
+
+ return ERROR_SUCCESS;
}
//
diff --git a/libyara/mem.c b/libyara/mem.c
index bf4f4d8..e18e3f5 100644
--- a/libyara/mem.c
+++ b/libyara/mem.c
@@ -14,22 +14,34 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
+
+
#ifdef _WIN32
#include <windows.h>
#include <string.h>
+#include <yara/error.h>
+
static HANDLE hHeap;
-void yr_heap_alloc()
+int yr_heap_alloc()
{
hHeap = HeapCreate(0, 0x8000, 0);
+
+ if (hHeap == NULL)
+ return ERROR_INTERNAL_FATAL_ERROR;
+
+ return ERROR_SUCCESS;
}
-void yr_heap_free()
+int yr_heap_free()
{
- HeapDestroy(hHeap);
+ if (HeapDestroy(hHeap))
+ return ERROR_SUCCESS;
+ else
+ return ERROR_INTERNAL_FATAL_ERROR;
}
@@ -68,16 +80,17 @@ char* yr_strdup(const char *str)
#include <string.h>
#include <stdio.h>
+#include <yara/error.h>
-void yr_heap_alloc()
+int yr_heap_alloc()
{
- return;
+ return ERROR_SUCCESS;
}
-void yr_heap_free()
+int yr_heap_free()
{
- return;
+ return ERROR_SUCCESS;
}
diff --git a/yara-python/yara-python.c b/yara-python/yara-python.c
index 6839750..b531ee5 100644
--- a/yara-python/yara-python.c
+++ b/yara-python/yara-python.c
@@ -1509,7 +1509,11 @@ MOD_INIT(yara)
PyModule_AddObject(m, "TimeoutError", YaraTimeoutError);
PyModule_AddObject(m, "WarningError", YaraWarningError);
- yr_initialize();
+ if (yr_initialize() == ERROR_SUCCESS)
+ {
+ PyErr_SetString(YareError, "initialization error");
+ return MOD_ERROR_VAL;
+ }
Py_AtExit(yr_finalize);
diff --git a/yara.c b/yara.c
index 9160be4..79519da 100644
--- a/yara.c
+++ b/yara.c
@@ -945,7 +945,14 @@ int main(
return EXIT_FAILURE;
}
- yr_initialize();
+ result = yr_initialize();
+
+ if (result != ERROR_SUCCESS)
+ {
+ fprintf(stderr, "initialization error: %d\n", result);
+ cleanup();
+ return EXIT_FAILURE;
+ }
result = yr_rules_load(argv[optind], &rules);
diff --git a/yarac.c b/yarac.c
index 157e42a..f45361d 100644
--- a/yarac.c
+++ b/yarac.c
@@ -171,7 +171,10 @@ int main(
YR_RULES* rules;
FILE* rule_file;
- yr_initialize();
+ result = yr_initialize();
+
+ if (result != ERROR_SUCCESS)
+ return EXIT_FAILURE;
if (yr_compiler_create(&compiler) != ERROR_SUCCESS)
{
--
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