aboutsummaryrefslogtreecommitdiff
path: root/src/Scraping
diff options
context:
space:
mode:
authorfrosty <gabriel@bwaaa.monster>2026-08-12 15:40:41 -0400
committerfrosty <gabriel@bwaaa.monster>2026-08-12 15:40:41 -0400
commit10d44e7ff547a806e4bf109e7aadd48488ddc9f0 (patch)
tree2c558733c05cf3b33d6d68627d0b52fe89988985 /src/Scraping
parentf20d8f711588a1918a6d75b99b0e11d745ca8395 (diff)
downloadomnisearch-10d44e7ff547a806e4bf109e7aadd48488ddc9f0.tar.gz
fix: improvements allocation safety and string processing
Diffstat (limited to 'src/Scraping')
-rw-r--r--src/Scraping/Scraping.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Scraping/Scraping.c b/src/Scraping/Scraping.c
index 5c51ca5..9c4ff57 100644
--- a/src/Scraping/Scraping.c
+++ b/src/Scraping/Scraping.c
@@ -214,13 +214,17 @@ int setup_job(ScrapeJob *job, CURLM *multi_handle) {
return -1;
}
- for (char *p = encoded_query + strlen(encoded_query) - 3; p >= encoded_query;
- p--) {
- if (p[0] == '%' && p[1] == '2' && p[2] == '0') {
- *p = '+';
- memmove(p + 1, p + 3, strlen(p + 3) + 1);
+ char *read = encoded_query;
+ char *write = encoded_query;
+ while (*read) {
+ if (read[0] == '%' && read[1] == '2' && read[2] == '0') {
+ *write++ = '+';
+ read += 3;
+ } else {
+ *write++ = *read++;
}
}
+ *write = '\0';
char *full_url =
build_search_url(job->engine->base_url, job->engine->page_param,