diff options
Diffstat (limited to 'src/analysis/scan/context-int.h')
-rw-r--r-- | src/analysis/scan/context-int.h | 24 |
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 */ |