summaryrefslogtreecommitdiff
path: root/src/analysis/scan/patterns
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2023-10-24 22:30:12 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2023-10-24 22:30:12 (GMT)
commit4eebf4a8752464691053fa3706ea6be9413676fa (patch)
tree40dc0f44835629729ca7fbf6858789b67825e72d /src/analysis/scan/patterns
parentaae46fab1f41df0cce9da9fc3c17eea776e487b1 (diff)
Ensure patterns found at the edges of scanned content do not crash the scanner.
Diffstat (limited to 'src/analysis/scan/patterns')
-rw-r--r--src/analysis/scan/patterns/tokens/nodes/plain.c14
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