Introduction
Introduction Statistics Contact Development Disclaimer Help
use a fixed-size buffer for domain name extraction - surf-adblock - Surf adbloc…
git clone git://git.codemadness.org/surf-adblock
Log
Files
Refs
README
LICENSE
---
commit 08fb7a7ce1e8ac16f40f72820b3122bcc30c2100
parent c6ad19fedcfc3ae813187e47b90b1008edf047ea
Author: Quentin Rameau <[email protected]>
Date: Sun, 17 Jul 2016 19:47:56 +0200
use a fixed-size buffer for domain name extraction
We know per RFC 1035 (2.3.4. Size limits) [1] that the maximum data
storage length for a domain name is 255 bytes.
[1] https://tools.ietf.org/rfc/rfc1035.txt
Diffstat:
M surf-adblock.c | 27 +++++++++++++--------------
1 file changed, 13 insertions(+), 14 deletions(-)
---
diff --git a/surf-adblock.c b/surf-adblock.c
@@ -735,22 +735,23 @@ newpage(WebKitWebPage *page)
static void
documentloaded(WebKitWebPage *wp, Page *p)
{
+ char domain[256];
WebKitDOMDocument *doc = webkit_web_page_get_dom_document(wp);
WebKitDOMHTMLElement *body = webkit_dom_document_get_body(doc);
WebKitDOMElement *el;
String sitecss;
struct filterrule *r;
- const char *uri = webkit_web_page_get_uri(p->webpage);
- char *domain;
+ const char *s, *uri = webkit_web_page_get_uri(p->webpage);
size_t len;
if (!uri || (strncmp(uri, "http://", sizeof("http://") - 1) &&
strncmp(uri, "https://", sizeof("https://") - 1)))
return;
- domain = strstr(uri, "://") + sizeof("://") - 1;
- if (!(domain = westrndup(domain, strcspn(domain, "/"))))
- return;
+ s = strstr(uri, "://") + sizeof("://") - 1;
+ len = strcspn(s, "/");
+ memcpy(domain, s, len);
+ domain[len] = '\0';
printf("uri: %s\n", uri);
printf("domain: %s\n", domain);
@@ -790,8 +791,6 @@ documentloaded(WebKitWebPage *wp, Page *p)
WEBKIT_DOM_NODE(el), NULL);
}
#endif
-
- free(domain);
free(sitecss.data);
}
@@ -799,19 +798,21 @@ static gboolean
sendrequest(WebKitWebPage *wp, WebKitURIRequest *req,
WebKitURIResponse *res, Page *p)
{
+ char domain[256];
struct filterrule *r;
- const char *uri = webkit_web_page_get_uri(p->webpage),
+ const char *s, *uri = webkit_web_page_get_uri(p->webpage),
*requri = webkit_uri_request_get_uri(req);
- char *domain;
+ size_t len;
if (!uri || !strcmp(requri, uri) ||
(strncmp(uri, "http://", sizeof("http://") - 1) &&
strncmp(uri, "https://", sizeof("https://") - 1)))
return FALSE;
- domain = strstr(uri, "://") + sizeof("://") - 1;
- if (!(domain = westrndup(domain, strcspn(domain, "/"))))
- return FALSE;
+ s = strstr(uri, "://") + sizeof("://") - 1;
+ len = strcspn(s, "/");
+ memcpy(domain, s, len);
+ domain[len] = '\0';
/* match rules */
for (r = rules; r; r = r->next) {
@@ -822,11 +823,9 @@ sendrequest(WebKitWebPage *wp, WebKitURIRequest *req,
fprintf(stderr, "blocked: %s, %s\n", domain, requri);
- free(domain);
return TRUE;
}
}
- free(domain);
return FALSE;
}
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.