summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Dowad <alexinbeijing@gmail.com>2014-04-10 21:24:18 +0200
committerTimo Teräs <timo.teras@iki.fi>2014-04-25 10:17:20 +0300
commitb7eac294771a72711208d288657a5667d65e8882 (patch)
tree295ecc655384a2a82953be338774d6bc47dedf45
parent827c2c3823ba1923d3fb01e191997f6b9edd21a5 (diff)
downloadsquark-b7eac294771a72711208d288657a5667d65e8882.tar.bz2
squark-b7eac294771a72711208d288657a5667d65e8882.tar.xz
squark-filter: correctly identify URLs with uppercase chars in path
squark.db stores all filtered domains/URLs in lowercase. So when querying the filter DB, we need to convert the input URL to lowercase.
-rw-r--r--src/blob.c8
-rw-r--r--src/blob.h1
-rw-r--r--src/squark-filter.c1
3 files changed, 10 insertions, 0 deletions
diff --git a/src/blob.c b/src/blob.c
index c526d9b..196adf9 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -139,6 +139,14 @@ int blob_icmp(blob_t a, blob_t b)
return strncasecmp(a.ptr, b.ptr, a.len);
}
+void blob_lowercase(blob_t blob)
+{
+ int i;
+ char *ptr = blob.ptr;
+ for (i = 0; i < blob.len; i++)
+ ptr[i] = tolower(ptr[i]);
+}
+
int blob_pull_inet_addr(blob_t *b, struct in_addr *saddr)
{
unsigned long ip = 0;
diff --git a/src/blob.h b/src/blob.h
index 6a8e51c..c2a394e 100644
--- a/src/blob.h
+++ b/src/blob.h
@@ -42,6 +42,7 @@ char *blob_cstr_dup(blob_t b);
blob_t blob_dup(blob_t b);
int blob_cmp(blob_t a, blob_t b);
int blob_icmp(blob_t a, blob_t b);
+void blob_lowercase(blob_t blob);
unsigned long blob_inet_addr(blob_t buf);
blob_t blob_pushed(blob_t buffer, blob_t left);
diff --git a/src/squark-filter.c b/src/squark-filter.c
index 9eed4a7..50bd798 100644
--- a/src/squark-filter.c
+++ b/src/squark-filter.c
@@ -275,6 +275,7 @@ static int url_classify(struct url_info *url, struct sqdb *db)
/* and then search for path matches -- construct hashing
* string of url decoded path */
+ blob_lowercase(url->path); /* filter DB stores all URLs in lowercase */
blob_push_urldecode(&keybuf, url->path);
keylimits = blob_pushed(BLOB_BUF(buffer), keybuf);