diff options
Diffstat (limited to 'src/analysis/scan/patterns/modifiers/plain.c')
| -rw-r--r-- | src/analysis/scan/patterns/modifiers/plain.c | 25 | 
1 files changed, 17 insertions, 8 deletions
| diff --git a/src/analysis/scan/patterns/modifiers/plain.c b/src/analysis/scan/patterns/modifiers/plain.c index 5837d46..485bb23 100644 --- a/src/analysis/scan/patterns/modifiers/plain.c +++ b/src/analysis/scan/patterns/modifiers/plain.c @@ -56,7 +56,7 @@ static void g_scan_plain_modifier_finalize(GScanPlainModifier *);  static char *g_scan_plain_modifier_get_name(const GScanPlainModifier *);  /* Transforme une séquence d'octets pour motif de recherche. */ -static bool g_scan_plain_modifier_transform(const GScanPlainModifier *, const sized_binary_t *, sized_binary_t **, size_t *); +static bool g_scan_plain_modifier_transform(const GScanPlainModifier *, const sized_binary_t *, size_t, sized_binary_t **, size_t *); @@ -212,8 +212,9 @@ static char *g_scan_plain_modifier_get_name(const GScanPlainModifier *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,22 +224,30 @@ static char *g_scan_plain_modifier_get_name(const GScanPlainModifier *modifier)  *                                                                             *  ******************************************************************************/ -static bool g_scan_plain_modifier_transform(const GScanPlainModifier *modifier, const sized_binary_t *src, sized_binary_t **dest, size_t *count) +static bool g_scan_plain_modifier_transform(const GScanPlainModifier *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          */ +    const sized_binary_t *_src;             /* SOurce courante             */      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; -    binary->data = malloc(binary->len); +    for (i = 0; i < scount; i++, binary++) +    { +        _src = src + i; -    memcpy(binary->data, src->data, src->len); +        binary->len = _src->len; +        binary->data = malloc(binary->len); + +        memcpy(binary->data, _src->data, _src->len); + +    }      return result; | 
