return early on non web uri and simplify host parsing - surf-adblock - Surf adb… | |
git clone git://git.codemadness.org/surf-adblock | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit c882cd7277bb06ca5e14dcd0671a610141de6122 | |
parent cbebae04e483491bf237fe84393ac46c759742c8 | |
Author: Quentin Rameau <[email protected]> | |
Date: Sat, 16 Jul 2016 20:42:21 +0200 | |
return early on non web uri and simplify host parsing | |
We now only duplicate the domain part instead of the full uri string. | |
Diffstat: | |
M surf-adblock.c | 57 ++++++++++++++++++-----------… | |
1 file changed, 33 insertions(+), 24 deletions(-) | |
--- | |
diff --git a/surf-adblock.c b/surf-adblock.c | |
@@ -163,6 +163,16 @@ ecalloc(size_t nmemb, size_t size) | |
} | |
char * | |
+estrndup(const char *s, size_t n) | |
+{ | |
+ char *p; | |
+ | |
+ if (!(p = strndup(s, n))) | |
+ eprintf("strndup: %s\n", strerror(errno)); | |
+ return p; | |
+} | |
+ | |
+char * | |
estrdup(const char *s) | |
{ | |
char *p; | |
@@ -702,17 +712,17 @@ documentloaded(WebKitWebPage *wp, Page *p) | |
WebKitDOMElement *el; | |
String sitecss; | |
struct filterrule *r; | |
- char *uri = estrdup(webkit_web_page_get_uri(p->webpage)); | |
- char *domain, *s; | |
+ const char *s, *uri = webkit_web_page_get_uri(p->webpage); | |
+ char *domain; | |
- /* TODO: improve, hacky */ | |
- if ((domain = strstr(uri, "://"))) { | |
- domain += sizeof("://") - 1; | |
- } else { | |
- domain = uri; | |
- } | |
- if ((s = strchr(domain, '/'))) | |
- *s = '\0'; | |
+ if (!uri || strncmp(uri, "http://", sizeof("http://") - 1) && | |
+ strncmp(uri, "https://", sizeof("https://") - 1)) | |
+ return; | |
+ | |
+ domain = strstr(uri, "://") + sizeof("://") - 1; | |
+ if (!(s = strchr(domain, '/'))) | |
+ for(s = domain; *s; ++s) ; | |
+ domain = estrndup(domain, s - domain); | |
printf("uri: %s\n", uri); | |
printf("domain: %s\n", domain); | |
@@ -745,7 +755,7 @@ documentloaded(WebKitWebPage *wp, Page *p) | |
WEBKIT_DOM_NODE(el), NULL); | |
#endif | |
- free(uri); | |
+ free(domain); | |
free(sitecss.data); | |
} | |
@@ -755,19 +765,18 @@ sendrequest(WebKitWebPage *wp, WebKitURIRequest *req, | |
{ | |
struct filterrule *r; | |
- const char *requri = webkit_uri_request_get_uri(req); | |
- char *uri = estrdup(webkit_web_page_get_uri(p->webpage)); | |
- char *domain, *s; | |
+ const char *s, *uri = webkit_web_page_get_uri(p->webpage), | |
+ *requri = webkit_uri_request_get_uri(req); | |
+ char *domain; | |
- /* TODO: improve, hacky */ | |
- if ((domain = strstr(uri, "://"))) { | |
- domain += sizeof("://") - 1; | |
- } else { | |
- domain = uri; | |
- } | |
+ if (!uri || strncmp(uri, "http://", sizeof("http://") - 1) && | |
+ strncmp(uri, "https://", sizeof("https://") - 1)) | |
+ return FALSE; | |
- if ((s = strchr(domain, '/'))) | |
- *s = '\0'; | |
+ domain = strstr(uri, "://") + sizeof("://") - 1; | |
+ if (!(s = strchr(domain, '/'))) | |
+ for(s = domain; *s; ++s) ; | |
+ domain = estrndup(domain, s - domain); | |
/* match rules */ | |
for (r = rules; r; r = r->next) { | |
@@ -777,11 +786,11 @@ sendrequest(WebKitWebPage *wp, WebKitURIRequest *req, | |
printf("domain: %s\n", domain); | |
fprintf(stderr, "blocked: %s, %s\n", domain, requri); | |
- free(uri); | |
+ free(domain); | |
return TRUE; | |
} | |
} | |
- free(uri); | |
+ free(domain); | |
return FALSE; | |
} |