summaryrefslogtreecommitdiff
path: root/src/analysis/scan/patterns/modifiers/list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/scan/patterns/modifiers/list.c')
-rw-r--r--src/analysis/scan/patterns/modifiers/list.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/analysis/scan/patterns/modifiers/list.c b/src/analysis/scan/patterns/modifiers/list.c
index 0390f47..040d2f8 100644
--- a/src/analysis/scan/patterns/modifiers/list.c
+++ b/src/analysis/scan/patterns/modifiers/list.c
@@ -58,6 +58,9 @@ static char *g_scan_modifier_list_get_name(const GScanModifierList *);
/* Transforme une séquence d'octets pour motif de recherche. */
static bool g_scan_modifier_list_transform(const GScanModifierList *, const sized_binary_t *, size_t, sized_binary_t **, size_t *);
+/* Retrouve l'origine d'une correspondance à partir d'un indice. */
+static char *g_scan_modifier_list_get_path(const GScanModifierList *, size_t *);
+
/* ---------------------------------------------------------------------------------- */
@@ -96,6 +99,7 @@ static void g_scan_modifier_list_class_init(GScanModifierListClass *klass)
modifier->get_name = (get_scan_modifier_name_fc)g_scan_modifier_list_get_name;
modifier->transform = (transform_scan_token_fc)g_scan_modifier_list_transform;
+ modifier->get_path = (get_modifier_path)g_scan_modifier_list_get_path;
}
@@ -404,3 +408,31 @@ static bool g_scan_modifier_list_transform(const GScanModifierList *modifier, co
return result;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : modifier = modificateur à consulter. *
+* index = indice de la combinaison ciblée. [OUT] *
+* *
+* Description : Retrouve l'origine d'une correspondance à partir d'un indice.*
+* *
+* Retour : Version humainement lisible de la combinaison. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_scan_modifier_list_get_path(const GScanModifierList *modifier, size_t *index)
+{
+ char *result; /* Combinaison à retourner */
+ size_t i; /* Boucle de parcours #1 */
+
+ result = NULL;
+
+ for (i = 0; i < modifier->count && result == NULL; i++)
+ result = g_scan_token_modifier_get_path(modifier->modifiers[i], index);
+
+ return result;
+
+}