surf-adblock

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit c882cd7277bb06ca5e14dcd0671a610141de6122
parent cbebae04e483491bf237fe84393ac46c759742c8
Author: Quentin Rameau <quinq@fifth.space>
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:
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; }