diff options
author | cash <cash.costello@gmail.com> | 2011-12-03 21:00:42 -0500 |
---|---|---|
committer | cash <cash.costello@gmail.com> | 2011-12-03 21:06:13 -0500 |
commit | e99c2870a1ca815c1c94bfec209bda8de4b23a7e (patch) | |
tree | 40de06258d4f62c26d67e8a2cd3a3d808584a99c | |
parent | 998b5cdc825de34d02d3204adf3bf6eccea74b66 (diff) | |
download | elgg-e99c2870a1ca815c1c94bfec209bda8de4b23a7e.tar.gz elgg-e99c2870a1ca815c1c94bfec209bda8de4b23a7e.tar.bz2 |
Fixes #4046 checking offset compared to string length
-rw-r--r-- | mod/search/start.php | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mod/search/start.php b/mod/search/start.php index 73a96dc0a..bb8531e9c 100644 --- a/mod/search/start.php +++ b/mod/search/start.php @@ -107,6 +107,7 @@ function search_get_highlighted_relevant_substrings($haystack, $query, $min_matc $word = elgg_strtolower($word); $count = elgg_substr_count($haystack_lc, $word); $word_len = elgg_strlen($word); + $haystack_len = elgg_strlen($haystack_lc); // find the start positions for the words if ($count > 1) { @@ -117,6 +118,10 @@ function search_get_highlighted_relevant_substrings($haystack, $query, $min_matc $stop = $pos + $word_len + $min_match_context; $lengths[] = $stop - $start; $offset += $pos + $word_len; + + if ($offset >= $haystack_len) { + break; + } } } else { $pos = elgg_strpos($haystack_lc, $word); |