diff options
Diffstat (limited to 'src/analysis/scan/patterns/tokens/nodes')
-rw-r--r-- | src/analysis/scan/patterns/tokens/nodes/plain.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/analysis/scan/patterns/tokens/nodes/plain.c b/src/analysis/scan/patterns/tokens/nodes/plain.c index 7309574..cca0258 100644 --- a/src/analysis/scan/patterns/tokens/nodes/plain.c +++ b/src/analysis/scan/patterns/tokens/nodes/plain.c @@ -484,6 +484,13 @@ static bool check_scan_token_node_plain_content(const sized_binary_t *raw, const { ptr = g_binary_content_get_raw_access(content, &pos, atom->pos); + /** + * Si la partion atomique recherchée est trouvée en début de contenu, + * le reste du motif de recherche va déborder. L'accès correspondant + * est donc refusé, et cette situation est prise en compte ici. + */ + if (ptr == NULL) goto done; + if (nocase) ret = memcasecmp(raw->data, ptr, atom->pos); else @@ -501,6 +508,13 @@ static bool check_scan_token_node_plain_content(const sized_binary_t *raw, const ptr = g_binary_content_get_raw_access(content, &pos, atom->rem); + /** + * Si la partion atomique recherchée est trouvée en fin de contenu, + * le reste du motif de recherche va déborder. L'accès correspondant + * est donc refusé, et cette situation est prise en compte ici. + */ + if (ptr == NULL) goto done; + if (nocase) ret = memcasecmp(raw->data + atom->pos + atom->len, ptr, atom->rem); else |