summaryrefslogtreecommitdiff
path: root/src/analysis/scan/context-int.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/scan/context-int.h')
-rw-r--r--src/analysis/scan/context-int.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/analysis/scan/context-int.h b/src/analysis/scan/context-int.h
index efbd24e..6135201 100644
--- a/src/analysis/scan/context-int.h
+++ b/src/analysis/scan/context-int.h
@@ -30,8 +30,23 @@
#include "expr.h"
#include "../../common/fnv1a.h"
+#include "../../glibext/umemslice.h"
+//#define __USE_TABLE_FOR_MATCHES
+
+
+#ifndef __USE_TABLE_FOR_MATCHES
+
+/* Lien entre un motif et ses correspondances */
+typedef struct _matched_pattern_t
+{
+ const GSearchPattern *pattern; /* Motif recherché */
+ GScanMatches *matches; /* Correspondances associées */
+
+} matched_pattern_t;
+
+#endif
/* Condition définissant une règle de correspondance */
typedef struct _rule_condition_t
@@ -54,10 +69,17 @@ struct _GScanContext
GBinContent *content; /* Contenu binaire traité */
bool scan_done; /* Phase d'analyse terminée ? */
- GUMemSlice **match_storages; /* Suivi de correspondances */
+ GUMemSlice *match_allocator; /* Suivi de correspondances */
+ match_area_t **match_storages; /* Suivi de correspondances */
size_t storages_count; /* Quantité de ces suivis */
+#ifdef __USE_TABLE_FOR_MATCHES
GHashTable *full_trackers; /* Correspondances confirmées */
+#else
+ matched_pattern_t *full_trackers; /* Correspondances confirmées */
+ size_t full_allocated; /* Quantité d'éléments alloués */
+ size_t full_count; /* Quantité de correspondances */
+#endif
bool global; /* Validation globale */