summaryrefslogtreecommitdiff
path: root/src/analysis/scan/patterns/modifiers/hex.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/scan/patterns/modifiers/hex.c')
-rw-r--r--src/analysis/scan/patterns/modifiers/hex.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/analysis/scan/patterns/modifiers/hex.c b/src/analysis/scan/patterns/modifiers/hex.c
index cf1583c..da992df 100644
--- a/src/analysis/scan/patterns/modifiers/hex.c
+++ b/src/analysis/scan/patterns/modifiers/hex.c
@@ -56,7 +56,7 @@ static void g_scan_hex_modifier_finalize(GScanHexModifier *);
static char *g_scan_hex_modifier_get_name(const GScanHexModifier *);
/* Transforme une séquence d'octets pour motif de recherche. */
-static bool g_scan_hex_modifier_transform(const GScanHexModifier *, const sized_binary_t *, sized_binary_t **, size_t *);
+static bool g_scan_hex_modifier_transform(const GScanHexModifier *, const sized_binary_t *, size_t, sized_binary_t **, size_t *);
@@ -212,8 +212,9 @@ static char *g_scan_hex_modifier_get_name(const GScanHexModifier *modifier)
* *
* Paramètres : modifier = modificateur à solliciter. *
* src = séquence d'octets à traiter. *
+* scount = quantité de ces séquences. *
* dest = nouvelle(s) séquence(s) d'octets obtenue(s) [OUT] *
-* count = quantité de ces séquences. *
+* dcount = quantité de ces séquences. *
* *
* Description : Transforme une séquence d'octets pour motif de recherche. *
* *
@@ -223,28 +224,36 @@ static char *g_scan_hex_modifier_get_name(const GScanHexModifier *modifier)
* *
******************************************************************************/
-static bool g_scan_hex_modifier_transform(const GScanHexModifier *modifier, const sized_binary_t *src, sized_binary_t **dest, size_t *count)
+static bool g_scan_hex_modifier_transform(const GScanHexModifier *modifier, const sized_binary_t *src, size_t scount, sized_binary_t **dest, size_t *dcount)
{
bool result; /* Bilan d'opération à renvoyer*/
sized_binary_t *binary; /* Raccourci vers le stockage */
- size_t i; /* Boucle de parcours */
+ size_t i; /* Boucle de parcours #1 */
+ const sized_binary_t *_src; /* SOurce courante */
+ size_t k; /* Boucle de parcours #2 */
static char *alphabet = "0123456789abcdef";
result = true;
- *dest = malloc(1 * sizeof(sized_binary_t));
- *count = 1;
+ *dcount = scount;
+ *dest = malloc(*dcount * sizeof(sized_binary_t));
binary = &(*dest)[0];
- binary->len = src->len * 2;
- binary->data = malloc(binary->len);
-
- for (i = 0; i < src->len; i++)
+ for (i = 0; i < scount; i++, binary++)
{
- binary->data[i * 2 + 0] = alphabet[src->data[i] >> 4];
- binary->data[i * 2 + 1] = alphabet[src->data[i] & 0xf];
+ _src = src + i;
+
+ binary->len = _src->len * 2;
+ binary->data = malloc(binary->len);
+
+ for (k = 0; k < _src->len; k++)
+ {
+ binary->data[k * 2 + 0] = alphabet[_src->data[k] >> 4];
+ binary->data[k * 2 + 1] = alphabet[_src->data[k] & 0xf];
+ }
+
}
return result;