From 3ee1101d66fc6c7c015ef2d4a7ef51208ae29745 Mon Sep 17 00:00:00 2001 From: Francesco Tamagni Date: Tue, 8 Oct 2024 17:08:09 +0200 Subject: [PATCH] memory: Make regex patterns raw According to the docs of `g_regex_new`: "Usually strings must be valid UTF-8 strings, using this flag they are considered as a raw sequence of bytes." The "strings" this refers to are the haystacks we then pass to `g_regex_match_full` when searching. Without the flag, memory search with regex patterns can get interrupted before the range is over, when "invalid" bytes are encountered, resulting in false negatives. --- gum/gummemory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gum/gummemory.c b/gum/gummemory.c index 26c800dd5..381503500 100644 --- a/gum/gummemory.c +++ b/gum/gummemory.c @@ -576,7 +576,7 @@ gum_match_pattern_new_from_regex (const gchar * regex_str) GumMatchPattern * pattern; GRegex * regex; - regex = g_regex_new (regex_str, G_REGEX_OPTIMIZE, G_REGEX_MATCH_NOTEMPTY, + regex = g_regex_new (regex_str, G_REGEX_OPTIMIZE | G_REGEX_RAW, G_REGEX_MATCH_NOTEMPTY, NULL); if (regex == NULL) return NULL;