summaryrefslogtreecommitdiffstats
path: root/src/libserver/url.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libserver/url.c')
-rw-r--r--src/libserver/url.c468
1 files changed, 234 insertions, 234 deletions
diff --git a/src/libserver/url.c b/src/libserver/url.c
index cf140f507..b0ece195b 100644
--- a/src/libserver/url.c
+++ b/src/libserver/url.c
@@ -28,14 +28,14 @@
#include <unicode/ucnv.h>
typedef struct url_match_s {
- const gchar *m_begin;
+ const char *m_begin;
gsize m_len;
- const gchar *pattern;
- const gchar *prefix;
- const gchar *newline_pos;
- const gchar *prev_newline_pos;
+ const char *pattern;
+ const char *prefix;
+ const char *newline_pos;
+ const char *prev_newline_pos;
gboolean add_prefix;
- gchar st;
+ char st;
} url_match_t;
#define URL_MATCHER_FLAG_NOHTML (1u << 0u)
@@ -47,7 +47,7 @@ struct url_callback_data;
static const struct {
enum rspamd_url_protocol proto;
- const gchar *name;
+ const char *name;
gsize len;
} rspamd_url_protocols[] = {
{.proto = PROTOCOL_FILE,
@@ -75,58 +75,58 @@ static const struct {
.name = NULL,
.len = 0}};
struct url_matcher {
- const gchar *pattern;
- const gchar *prefix;
+ const char *pattern;
+ const char *prefix;
gboolean (*start)(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
gboolean (*end)(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
- gint flags;
+ int flags;
};
static gboolean url_file_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_file_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_web_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_web_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_tld_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_tld_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_email_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_email_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_tel_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
static gboolean url_tel_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match);
struct url_matcher static_matchers[] = {
@@ -173,9 +173,9 @@ struct url_matcher static_matchers[] = {
0}};
struct rspamd_url_flag_name {
- const gchar *name;
- gint flag;
- gint hash;
+ const char *name;
+ int flag;
+ int hash;
} url_flag_names[] = {
{"phished", RSPAMD_URL_FLAG_PHISHED, -1},
{"numeric", RSPAMD_URL_FLAG_NUMERIC, -1},
@@ -220,19 +220,19 @@ __KHASH_IMPL(rspamd_url_host_hash, kh_inline, struct rspamd_url *, char, false,
rspamd_url_host_hash, rspamd_urls_host_cmp);
struct url_callback_data {
- const gchar *begin;
- gchar *url_str;
+ const char *begin;
+ char *url_str;
rspamd_mempool_t *pool;
- gint len;
+ int len;
enum rspamd_url_find_type how;
gboolean prefix_added;
- guint newline_idx;
+ unsigned int newline_idx;
GArray *matchers;
GPtrArray *newlines;
- const gchar *start;
- const gchar *fin;
- const gchar *end;
- const gchar *last_at;
+ const char *start;
+ const char *fin;
+ const char *end;
+ const char *last_at;
url_insert_function func;
void *funcd;
};
@@ -381,12 +381,12 @@ static const unsigned int url_scanner_table[256] = {
IS_URLSAFE | IS_DOMAIN, IS_URLSAFE | IS_DOMAIN, IS_URLSAFE | IS_DOMAIN,
IS_URLSAFE | IS_DOMAIN};
-#define is_lwsp(x) ((url_scanner_table[(guchar) (x)] & IS_LWSP) != 0)
-#define is_mailsafe(x) ((url_scanner_table[(guchar) (x)] & (IS_MAILSAFE)) != 0)
-#define is_domain(x) ((url_scanner_table[(guchar) (x)] & IS_DOMAIN) != 0)
-#define is_urlsafe(x) ((url_scanner_table[(guchar) (x)] & (IS_URLSAFE)) != 0)
+#define is_lwsp(x) ((url_scanner_table[(unsigned char) (x)] & IS_LWSP) != 0)
+#define is_mailsafe(x) ((url_scanner_table[(unsigned char) (x)] & (IS_MAILSAFE)) != 0)
+#define is_domain(x) ((url_scanner_table[(unsigned char) (x)] & IS_DOMAIN) != 0)
+#define is_urlsafe(x) ((url_scanner_table[(unsigned char) (x)] & (IS_URLSAFE)) != 0)
-const gchar *
+const char *
rspamd_url_strerror(int err)
{
switch (err) {
@@ -414,15 +414,15 @@ rspamd_url_strerror(int err)
}
static gboolean
-rspamd_url_parse_tld_file(const gchar *fname,
+rspamd_url_parse_tld_file(const char *fname,
struct url_match_scanner *scanner)
{
FILE *f;
struct url_matcher m;
- gchar *linebuf = NULL, *p;
+ char *linebuf = NULL, *p;
gsize buflen = 0;
gssize r;
- gint flags;
+ int flags;
f = fopen(fname, "r");
@@ -483,7 +483,7 @@ rspamd_url_parse_tld_file(const gchar *fname,
static void
rspamd_url_add_static_matchers(struct url_match_scanner *sc)
{
- gint n = G_N_ELEMENTS(static_matchers), i;
+ int n = G_N_ELEMENTS(static_matchers), i;
for (i = 0; i < n; i++) {
if (static_matchers[i].flags & URL_MATCHER_FLAG_REGEXP) {
@@ -535,7 +535,7 @@ void rspamd_url_deinit(void)
}
}
-void rspamd_url_init(const gchar *tld_file)
+void rspamd_url_init(const char *tld_file)
{
GError *err = NULL;
gboolean ret = TRUE;
@@ -609,15 +609,15 @@ void rspamd_url_init(const gchar *tld_file)
}
/* Generate hashes for flags */
- for (gint i = 0; i < G_N_ELEMENTS(url_flag_names); i++) {
+ for (int i = 0; i < G_N_ELEMENTS(url_flag_names); i++) {
url_flag_names[i].hash =
rspamd_cryptobox_fast_hash_specific(RSPAMD_CRYPTOBOX_HASHFAST_INDEPENDENT,
url_flag_names[i].name,
strlen(url_flag_names[i].name), 0);
}
/* Ensure that we have no hashes collisions O(N^2) but this array is small */
- for (gint i = 0; i < G_N_ELEMENTS(url_flag_names) - 1; i++) {
- for (gint j = i + 1; j < G_N_ELEMENTS(url_flag_names); j++) {
+ for (int i = 0; i < G_N_ELEMENTS(url_flag_names) - 1; i++) {
+ for (int j = i + 1; j < G_N_ELEMENTS(url_flag_names); j++) {
if (url_flag_names[i].hash == url_flag_names[j].hash) {
msg_err("collision: both %s and %s map to %d",
url_flag_names[i].name, url_flag_names[j].name,
@@ -638,7 +638,7 @@ void rspamd_url_init(const gchar *tld_file)
} while (0)
static bool
-is_url_start(gchar c)
+is_url_start(char c)
{
if (c == '(' ||
c == '{' ||
@@ -652,7 +652,7 @@ is_url_start(gchar c)
}
static bool
-is_url_end(gchar c)
+is_url_end(char c)
{
if (c == ')' ||
c == '}' ||
@@ -679,19 +679,19 @@ is_domain_start(int p)
return FALSE;
}
-static const guint max_domain_length = 253;
-static const guint max_dns_label = 63;
-static const guint max_email_user = 64;
+static const unsigned int max_domain_length = 253;
+static const unsigned int max_dns_label = 63;
+static const unsigned int max_email_user = 64;
-static gint
+static int
rspamd_mailto_parse(struct http_parser_url *u,
- const gchar *str, gsize len,
- gchar const **end,
- enum rspamd_url_parse_flags parse_flags, guint *flags)
+ const char *str, gsize len,
+ char const **end,
+ enum rspamd_url_parse_flags parse_flags, unsigned int *flags)
{
- const gchar *p = str, *c = str, *last = str + len;
- gchar t;
- gint ret = 1;
+ const char *p = str, *c = str, *last = str + len;
+ char t;
+ int ret = 1;
enum {
parse_mailto,
parse_slash,
@@ -871,12 +871,12 @@ out:
return ret;
}
-static gint
+static int
rspamd_telephone_parse(struct http_parser_url *u,
- const gchar *str, gsize len,
- gchar const **end,
+ const char *str, gsize len,
+ char const **end,
enum rspamd_url_parse_flags parse_flags,
- guint *flags)
+ unsigned int *flags)
{
enum {
parse_protocol,
@@ -889,9 +889,9 @@ rspamd_telephone_parse(struct http_parser_url *u,
parse_phone,
} st = parse_protocol;
- const gchar *p = str, *c = str, *last = str + len;
- gchar t;
- gint ret = 1, i;
+ const char *p = str, *c = str, *last = str + len;
+ char t;
+ int ret = 1, i;
UChar32 uc;
if (u != NULL) {
@@ -1012,18 +1012,18 @@ out:
return ret;
}
-static gint
-rspamd_web_parse(struct http_parser_url *u, const gchar *str, gsize len,
- gchar const **end,
+static int
+rspamd_web_parse(struct http_parser_url *u, const char *str, gsize len,
+ char const **end,
enum rspamd_url_parse_flags parse_flags,
- guint *flags)
+ unsigned int *flags)
{
- const gchar *p = str, *c = str, *last = str + len, *slash = NULL,
- *password_start = NULL, *user_start = NULL;
- gchar t = 0;
+ const char *p = str, *c = str, *last = str + len, *slash = NULL,
+ *password_start = NULL, *user_start = NULL;
+ char t = 0;
UChar32 uc;
glong pt;
- gint ret = 1;
+ int ret = 1;
gboolean user_seen = FALSE;
enum {
parse_protocol,
@@ -1336,9 +1336,9 @@ rspamd_web_parse(struct http_parser_url *u, const gchar *str, gsize len,
}
else if (*p != '.' && *p != '-' && *p != '_' && *p != '%') {
if (*p & 0x80) {
- guint i = 0;
+ unsigned int i = 0;
- U8_NEXT(((const guchar *) p), i, last - p, uc);
+ U8_NEXT(((const unsigned char *) p), i, last - p, uc);
if (uc < 0) {
/* Bad utf8 */
@@ -1393,7 +1393,7 @@ rspamd_web_parse(struct http_parser_url *u, const gchar *str, gsize len,
break;
case parse_port_password:
if (g_ascii_isdigit(t)) {
- const gchar *tmp = p;
+ const char *tmp = p;
while (tmp < last) {
if (!g_ascii_isdigit(*tmp)) {
@@ -1648,19 +1648,19 @@ out:
#undef SET_U
-static gint
+static int
rspamd_tld_trie_callback(struct rspamd_multipattern *mp,
- guint strnum,
- gint match_start,
- gint match_pos,
- const gchar *text,
+ unsigned int strnum,
+ int match_start,
+ int match_pos,
+ const char *text,
gsize len,
void *context)
{
struct url_matcher *matcher;
- const gchar *start, *pos, *p;
+ const char *start, *pos, *p;
struct rspamd_url *url = context;
- gint ndots;
+ int ndots;
matcher = &g_array_index(url_scanner->matchers_full, struct url_matcher,
strnum);
@@ -1675,9 +1675,9 @@ rspamd_tld_trie_callback(struct rspamd_multipattern *mp,
p = pos - 1;
start = rspamd_url_host_unsafe(url);
- if (*pos != '.' || match_pos != (gint) url->hostlen) {
+ if (*pos != '.' || match_pos != (int) url->hostlen) {
/* Something weird has been found */
- if (match_pos == (gint) url->hostlen - 1) {
+ if (match_pos == (int) url->hostlen - 1) {
pos = rspamd_url_host_unsafe(url) + match_pos;
if (*pos == '.') {
/* This is dot at the end of domain */
@@ -1719,8 +1719,8 @@ static void
rspamd_url_regen_from_inet_addr(struct rspamd_url *uri, const void *addr, int af,
rspamd_mempool_t *pool)
{
- gchar *strbuf, *p;
- const gchar *start_offset;
+ char *strbuf, *p;
+ const char *start_offset;
gsize slen = uri->urllen - uri->hostlen;
goffset r = 0;
@@ -1738,7 +1738,7 @@ rspamd_url_regen_from_inet_addr(struct rspamd_url *uri, const void *addr, int af
/* Allocate new string to build it from IP */
strbuf = rspamd_mempool_alloc(pool, slen + 1);
r += rspamd_snprintf(strbuf + r, slen - r, "%*s",
- (gint) (uri->hostshift),
+ (int) (uri->hostshift),
uri->string);
uri->hostshift = r;
@@ -1761,7 +1761,7 @@ rspamd_url_regen_from_inet_addr(struct rspamd_url *uri, const void *addr, int af
p = strbuf + r;
start_offset = p + 1;
r += rspamd_snprintf(strbuf + r, slen - r, "/%*s",
- (gint) uri->datalen,
+ (int) uri->datalen,
rspamd_url_data_unsafe(uri));
uri->datashift = start_offset - strbuf;
}
@@ -1777,7 +1777,7 @@ rspamd_url_regen_from_inet_addr(struct rspamd_url *uri, const void *addr, int af
p = strbuf + r;
start_offset = p + 1;
r += rspamd_snprintf(strbuf + r, slen - r, "?%*s",
- (gint) uri->querylen,
+ (int) uri->querylen,
rspamd_url_query_unsafe(uri));
uri->queryshift = start_offset - strbuf;
}
@@ -1785,7 +1785,7 @@ rspamd_url_regen_from_inet_addr(struct rspamd_url *uri, const void *addr, int af
p = strbuf + r;
start_offset = p + 1;
r += rspamd_snprintf(strbuf + r, slen - r, "#%*s",
- (gint) uri->fragmentlen,
+ (int) uri->fragmentlen,
rspamd_url_fragment_unsafe(uri));
uri->fragmentshift = start_offset - strbuf;
}
@@ -1797,8 +1797,8 @@ rspamd_url_regen_from_inet_addr(struct rspamd_url *uri, const void *addr, int af
static gboolean
rspamd_url_maybe_regenerate_from_ip(struct rspamd_url *uri, rspamd_mempool_t *pool)
{
- const gchar *p, *end, *c;
- gchar *errstr;
+ const char *p, *end, *c;
+ char *errstr;
struct in_addr in4;
struct in6_addr in6;
gboolean ret = FALSE, check_num = TRUE;
@@ -1834,7 +1834,7 @@ rspamd_url_maybe_regenerate_from_ip(struct rspamd_url *uri, rspamd_mempool_t *po
}
else {
/* Heuristics for broken urls */
- gchar buf[INET6_ADDRSTRLEN + 1];
+ char buf[INET6_ADDRSTRLEN + 1];
/* Try also numeric notation */
c = p;
n = 0;
@@ -1844,7 +1844,7 @@ rspamd_url_maybe_regenerate_from_ip(struct rspamd_url *uri, rspamd_mempool_t *po
while (p <= end && check_num) {
if (shift < 32 &&
((*p == '.' && dots < 3) || (p == end && dots <= 3))) {
- if (p - c + 1 >= (gint) sizeof(buf)) {
+ if (p - c + 1 >= (int) sizeof(buf)) {
msg_debug_pool("invalid numeric url %*.s...: too long",
INET6_ADDRSTRLEN, c);
return FALSE;
@@ -1933,7 +1933,7 @@ rspamd_url_maybe_regenerate_from_ip(struct rspamd_url *uri, rspamd_mempool_t *po
uri->flags |= RSPAMD_URL_FLAG_OBSCURED;
ret = TRUE;
}
- else if (end - c > (gint) sizeof(buf) - 1) {
+ else if (end - c > (int) sizeof(buf) - 1) {
rspamd_strlcpy(buf, c, end - c + 1);
if (inet_pton(AF_INET6, buf, &in6) == 1) {
@@ -1952,8 +1952,8 @@ static void
rspamd_url_shift(struct rspamd_url *uri, gsize nlen,
enum http_parser_url_fields field)
{
- guint old_shift, shift = 0;
- gint remain;
+ unsigned int old_shift, shift = 0;
+ int remain;
/* Shift remaining data */
switch (field) {
@@ -2081,8 +2081,8 @@ rspamd_url_shift(struct rspamd_url *uri, gsize nlen,
static void
rspamd_telephone_normalise_inplace(struct rspamd_url *uri)
{
- gchar *t, *h, *end;
- gint i = 0, w, orig_len;
+ char *t, *h, *end;
+ int i = 0, w, orig_len;
UChar32 uc;
t = rspamd_url_host_unsafe(uri);
@@ -2141,10 +2141,10 @@ is_idna_label_dot(UChar ch)
static bool
rspamd_url_remove_dots(struct rspamd_url *uri)
{
- const gchar *hstart = rspamd_url_host_unsafe(uri);
- gchar *t;
+ const char *hstart = rspamd_url_host_unsafe(uri);
+ char *t;
UChar32 uc;
- gint i = 0, hlen;
+ int i = 0, hlen;
bool ret = false;
if (uri->hostlen == 0) {
@@ -2155,7 +2155,7 @@ rspamd_url_remove_dots(struct rspamd_url *uri)
t = rspamd_url_host_unsafe(uri);
while (i < hlen) {
- gint prev_i = i;
+ int prev_i = i;
U8_NEXT(hstart, i, hlen, uc);
if (is_idna_label_dot(uc)) {
@@ -2185,14 +2185,14 @@ rspamd_url_remove_dots(struct rspamd_url *uri)
enum uri_errno
rspamd_url_parse(struct rspamd_url *uri,
- gchar *uristring, gsize len,
+ char *uristring, gsize len,
rspamd_mempool_t *pool,
enum rspamd_url_parse_flags parse_flags)
{
struct http_parser_url u;
- gchar *p;
- const gchar *end;
- guint complen, ret, flags = 0;
+ char *p;
+ const char *end;
+ unsigned int complen, ret, flags = 0;
gsize unquoted_len = 0;
memset(uri, 0, sizeof(*uri));
@@ -2239,7 +2239,7 @@ rspamd_url_parse(struct rspamd_url *uri,
return URI_ERRNO_BAD_FORMAT;
}
- if (end > uristring && (guint) (end - uristring) != len) {
+ if (end > uristring && (unsigned int) (end - uristring) != len) {
len = end - uristring;
}
@@ -2269,9 +2269,9 @@ rspamd_url_parse(struct rspamd_url *uri,
uri->urllen = len;
uri->flags = flags;
- for (guint i = 0; i < UF_MAX; i++) {
+ for (unsigned int i = 0; i < UF_MAX; i++) {
if (u.field_set & (1 << i)) {
- guint shift = u.field_data[i].off;
+ unsigned int shift = u.field_data[i].off;
complen = u.field_data[i].len;
if (complen >= G_MAXUINT16) {
@@ -2341,7 +2341,7 @@ rspamd_url_parse(struct rspamd_url *uri,
if (uri->protocol & (PROTOCOL_HTTP | PROTOCOL_HTTPS | PROTOCOL_MAILTO | PROTOCOL_FTP | PROTOCOL_FILE)) {
/* Ensure that hostname starts with something sane (exclude numeric urls) */
- const gchar *host = rspamd_url_host_unsafe(uri);
+ const char *host = rspamd_url_host_unsafe(uri);
if (!(is_domain_start(host[0]) || host[0] == ':')) {
return URI_ERRNO_BAD_FORMAT;
@@ -2535,8 +2535,8 @@ rspamd_url_parse(struct rspamd_url *uri,
if (uri->protocol & (PROTOCOL_HTTP | PROTOCOL_HTTPS | PROTOCOL_FTP) &&
uri->protocollen > 0 && uri->urllen > uri->protocollen + 2) {
- gchar *pos = &uri->string[uri->protocollen],
- *host_start = rspamd_url_host_unsafe(uri);
+ char *pos = &uri->string[uri->protocollen],
+ *host_start = rspamd_url_host_unsafe(uri);
while (pos < host_start) {
if (*pos == '\\') {
@@ -2575,24 +2575,24 @@ rspamd_url_parse(struct rspamd_url *uri,
}
struct tld_trie_cbdata {
- const gchar *begin;
+ const char *begin;
gsize len;
rspamd_ftok_t *out;
};
-static gint
+static int
rspamd_tld_trie_find_callback(struct rspamd_multipattern *mp,
- guint strnum,
- gint match_start,
- gint match_pos,
- const gchar *text,
+ unsigned int strnum,
+ int match_start,
+ int match_pos,
+ const char *text,
gsize len,
void *context)
{
struct url_matcher *matcher;
- const gchar *start, *pos, *p;
+ const char *start, *pos, *p;
struct tld_trie_cbdata *cbdata = context;
- gint ndots = 1;
+ int ndots = 1;
matcher = &g_array_index(url_scanner->matchers_full, struct url_matcher,
strnum);
@@ -2606,9 +2606,9 @@ rspamd_tld_trie_find_callback(struct rspamd_multipattern *mp,
p = pos - 1;
start = text;
- if (*pos != '.' || match_pos != (gint) cbdata->len) {
+ if (*pos != '.' || match_pos != (int) cbdata->len) {
/* Something weird has been found */
- if (match_pos != (gint) cbdata->len - 1) {
+ if (match_pos != (int) cbdata->len - 1) {
/* Search more */
return 0;
}
@@ -2640,7 +2640,7 @@ rspamd_tld_trie_find_callback(struct rspamd_multipattern *mp,
}
gboolean
-rspamd_url_find_tld(const gchar *in, gsize inlen, rspamd_ftok_t *out)
+rspamd_url_find_tld(const char *in, gsize inlen, rspamd_ftok_t *out)
{
struct tld_trie_cbdata cbdata;
@@ -2665,7 +2665,7 @@ rspamd_url_find_tld(const gchar *in, gsize inlen, rspamd_ftok_t *out)
return FALSE;
}
-static const gchar url_braces[] = {
+static const char url_braces[] = {
'(', ')',
'{', '}',
'[', ']',
@@ -2676,7 +2676,7 @@ static const gchar url_braces[] = {
static gboolean
url_file_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
match->m_begin = pos;
@@ -2693,12 +2693,12 @@ url_file_start(struct url_callback_data *cb,
static gboolean
url_file_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
- const gchar *p;
- gchar stop;
- guint i;
+ const char *p;
+ char stop;
+ unsigned int i;
p = pos + strlen(match->pattern);
stop = *p;
@@ -2727,12 +2727,12 @@ url_file_end(struct url_callback_data *cb,
static gboolean
url_tld_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
- const gchar *p = pos;
- guint processed = 0;
- static const guint max_shift = 253 + sizeof("https://");
+ const char *p = pos;
+ unsigned int processed = 0;
+ static const unsigned int max_shift = 253 + sizeof("https://");
/* Try to find the start of the url by finding any non-urlsafe character or whitespace/punctuation */
while (p >= cb->begin) {
@@ -2795,10 +2795,10 @@ url_tld_start(struct url_callback_data *cb,
static gboolean
url_tld_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
- const gchar *p;
+ const char *p;
gboolean ret = FALSE;
p = pos + match->m_len;
@@ -2843,7 +2843,7 @@ url_tld_end(struct url_callback_data *cb,
static gboolean
url_web_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
/* Check what we have found */
@@ -2858,7 +2858,7 @@ url_web_start(struct url_callback_data *cb,
}
}
else {
- guchar prev = *(pos - 1);
+ unsigned char prev = *(pos - 1);
if (g_ascii_isalnum(prev)) {
/* Part of another url */
@@ -2886,12 +2886,12 @@ url_web_start(struct url_callback_data *cb,
static gboolean
url_web_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
- const gchar *last = NULL;
- gint len = cb->end - pos;
- guint flags = 0;
+ const char *last = NULL;
+ int len = cb->end - pos;
+ unsigned int flags = 0;
if (match->newline_pos && match->st != '<') {
/* We should also limit our match end to the newline */
@@ -2926,7 +2926,7 @@ url_web_end(struct url_callback_data *cb,
static gboolean
url_email_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
if (!match->prefix || match->prefix[0] == '\0') {
@@ -2961,13 +2961,13 @@ url_email_start(struct url_callback_data *cb,
static gboolean
url_email_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
- const gchar *last = NULL;
+ const char *last = NULL;
struct http_parser_url u;
- gint len = cb->end - pos;
- guint flags = 0;
+ int len = cb->end - pos;
+ unsigned int flags = 0;
if (match->newline_pos && match->st != '<') {
/* We should also limit our match end to the newline */
@@ -2994,7 +2994,7 @@ url_email_end(struct url_callback_data *cb,
return TRUE;
}
else {
- const gchar *c, *p;
+ const char *c, *p;
/*
* Here we have just '@', so we need to find both start and end of the
* pattern
@@ -3060,7 +3060,7 @@ url_email_end(struct url_callback_data *cb,
static gboolean
url_tel_start(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
match->m_begin = pos;
@@ -3077,13 +3077,13 @@ url_tel_start(struct url_callback_data *cb,
static gboolean
url_tel_end(struct url_callback_data *cb,
- const gchar *pos,
+ const char *pos,
url_match_t *match)
{
- const gchar *last = NULL;
+ const char *last = NULL;
struct http_parser_url u;
- gint len = cb->end - pos;
- guint flags = 0;
+ int len = cb->end - pos;
+ unsigned int flags = 0;
if (match->newline_pos && match->st != '<') {
/* We should also limit our match end to the newline */
@@ -3106,8 +3106,8 @@ url_tel_end(struct url_callback_data *cb,
static gboolean
-rspamd_url_trie_is_match(struct url_matcher *matcher, const gchar *pos,
- const gchar *end, const gchar *newline_pos)
+rspamd_url_trie_is_match(struct url_matcher *matcher, const char *pos,
+ const char *end, const char *newline_pos)
{
if (matcher->flags & URL_MATCHER_FLAG_TLD_MATCH) {
/* Immediately check pos for valid chars */
@@ -3134,18 +3134,18 @@ rspamd_url_trie_is_match(struct url_matcher *matcher, const gchar *pos,
return TRUE;
}
-static gint
+static int
rspamd_url_trie_callback(struct rspamd_multipattern *mp,
- guint strnum,
- gint match_start,
- gint match_pos,
- const gchar *text,
+ unsigned int strnum,
+ int match_start,
+ int match_pos,
+ const char *text,
gsize len,
void *context)
{
struct url_matcher *matcher;
url_match_t m;
- const gchar *pos, *newline_pos = NULL;
+ const char *pos, *newline_pos = NULL;
struct url_callback_data *cb = context;
pos = text + match_pos;
@@ -3204,7 +3204,7 @@ rspamd_url_trie_callback(struct rspamd_multipattern *mp,
cb->len + 1,
"%s%*s",
m.prefix,
- (gint) m.m_len,
+ (int) m.m_len,
m.m_begin);
cb->prefix_added = TRUE;
}
@@ -3231,14 +3231,14 @@ rspamd_url_trie_callback(struct rspamd_multipattern *mp,
gboolean
rspamd_url_find(rspamd_mempool_t *pool,
- const gchar *begin, gsize len,
- gchar **url_str,
+ const char *begin, gsize len,
+ char **url_str,
enum rspamd_url_find_type how,
goffset *url_pos,
gboolean *prefix_added)
{
struct url_callback_data cb;
- gint ret;
+ int ret;
memset(&cb, 0, sizeof(cb));
cb.begin = begin;
@@ -3286,12 +3286,12 @@ rspamd_url_find(rspamd_mempool_t *pool,
return FALSE;
}
-static gint
+static int
rspamd_url_trie_generic_callback_common(struct rspamd_multipattern *mp,
- guint strnum,
- gint match_start,
- gint match_pos,
- const gchar *text,
+ unsigned int strnum,
+ int match_start,
+ int match_pos,
+ const char *text,
gsize len,
void *context,
gboolean multiple)
@@ -3299,9 +3299,9 @@ rspamd_url_trie_generic_callback_common(struct rspamd_multipattern *mp,
struct rspamd_url *url;
struct url_matcher *matcher;
url_match_t m;
- const gchar *pos, *newline_pos = NULL;
+ const char *pos, *newline_pos = NULL;
struct url_callback_data *cb = context;
- gint rc;
+ int rc;
rspamd_mempool_t *pool;
pos = text + match_pos;
@@ -3363,7 +3363,7 @@ rspamd_url_trie_generic_callback_common(struct rspamd_multipattern *mp,
cb->len + 1,
"%s%*s",
m.prefix,
- (gint) m.m_len,
+ (int) m.m_len,
m.m_begin);
cb->prefix_added = TRUE;
}
@@ -3414,12 +3414,12 @@ rspamd_url_trie_generic_callback_common(struct rspamd_multipattern *mp,
return !multiple;
}
-static gint
+static int
rspamd_url_trie_generic_callback_multiple(struct rspamd_multipattern *mp,
- guint strnum,
- gint match_start,
- gint match_pos,
- const gchar *text,
+ unsigned int strnum,
+ int match_start,
+ int match_pos,
+ const char *text,
gsize len,
void *context)
{
@@ -3427,12 +3427,12 @@ rspamd_url_trie_generic_callback_multiple(struct rspamd_multipattern *mp,
match_pos, text, len, context, TRUE);
}
-static gint
+static int
rspamd_url_trie_generic_callback_single(struct rspamd_multipattern *mp,
- guint strnum,
- gint match_start,
- gint match_pos,
- const gchar *text,
+ unsigned int strnum,
+ int match_start,
+ int match_pos,
+ const char *text,
gsize len,
void *context)
{
@@ -3468,7 +3468,7 @@ rspamd_url_query_callback(struct rspamd_url *url, gsize start_offset,
if (kh_size(MESSAGE_FIELD(task, urls)) > cbd->task->cfg->max_urls) {
msg_err_task("part has too many URLs, we cannot process more: "
"%d urls extracted ",
- (guint) kh_size(MESSAGE_FIELD(task, urls)));
+ (unsigned int) kh_size(MESSAGE_FIELD(task, urls)));
return FALSE;
}
@@ -3531,7 +3531,7 @@ rspamd_url_text_part_callback(struct rspamd_url *url, gsize start_offset,
if (kh_size(MESSAGE_FIELD(task, urls)) > cbd->task->cfg->max_urls) {
msg_err_task("part has too many URLs, we cannot process more: "
"%d urls extracted ",
- (guint) kh_size(MESSAGE_FIELD(task, urls)));
+ (unsigned int) kh_size(MESSAGE_FIELD(task, urls)));
return FALSE;
}
@@ -3589,7 +3589,7 @@ void rspamd_url_text_extract(rspamd_mempool_t *pool,
}
void rspamd_url_find_multiple(rspamd_mempool_t *pool,
- const gchar *in,
+ const char *in,
gsize inlen,
enum rspamd_url_find_type how,
GPtrArray *nlines,
@@ -3637,7 +3637,7 @@ void rspamd_url_find_multiple(rspamd_mempool_t *pool,
}
void rspamd_url_find_single(rspamd_mempool_t *pool,
- const gchar *in,
+ const char *in,
gsize inlen,
enum rspamd_url_find_type how,
url_insert_function func,
@@ -3697,9 +3697,9 @@ rspamd_url_task_subject_callback(struct rspamd_url *url, gsize start_offset,
gsize end_offset, gpointer ud)
{
struct rspamd_task *task = ud;
- gchar *url_str = NULL;
+ char *url_str = NULL;
struct rspamd_url *query_url;
- gint rc;
+ int rc;
gboolean prefix_added;
/* It is just a displayed URL, we should not check it for certain things */
@@ -3778,7 +3778,7 @@ rspamd_url_host_hash(struct rspamd_url *url)
static inline bool
rspamd_emails_cmp(struct rspamd_url *u1, struct rspamd_url *u2)
{
- gint r;
+ int r;
if (u1->hostlen != u2->hostlen || u1->hostlen == 0) {
return FALSE;
@@ -3838,10 +3838,10 @@ rspamd_urls_host_cmp(struct rspamd_url *u1, struct rspamd_url *u2)
return r == 0;
}
-gsize rspamd_url_decode(gchar *dst, const gchar *src, gsize size)
+gsize rspamd_url_decode(char *dst, const char *src, gsize size)
{
- gchar *d, ch, c, decoded;
- const gchar *s;
+ char *d, ch, c, decoded;
+ const char *s;
enum {
sw_usual = 0,
sw_quoted,
@@ -3992,36 +3992,36 @@ static const unsigned char rspamd_url_encoding_classes[256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0};
-#define CHECK_URL_COMPONENT(beg, len, flags) \
- do { \
- for (i = 0; i < (len); i++) { \
- if ((rspamd_url_encoding_classes[(guchar) (beg)[i]] & (flags)) == 0) { \
- dlen += 2; \
- } \
- } \
+#define CHECK_URL_COMPONENT(beg, len, flags) \
+ do { \
+ for (i = 0; i < (len); i++) { \
+ if ((rspamd_url_encoding_classes[(unsigned char) (beg)[i]] & (flags)) == 0) { \
+ dlen += 2; \
+ } \
+ } \
} while (0)
-#define ENCODE_URL_COMPONENT(beg, len, flags) \
- do { \
- for (i = 0; i < (len) && dend > d; i++) { \
- if ((rspamd_url_encoding_classes[(guchar) (beg)[i]] & (flags)) == 0) { \
- *d++ = '%'; \
- *d++ = hexdigests[(guchar) ((beg)[i] >> 4) & 0xf]; \
- *d++ = hexdigests[(guchar) (beg)[i] & 0xf]; \
- } \
- else { \
- *d++ = (beg)[i]; \
- } \
- } \
+#define ENCODE_URL_COMPONENT(beg, len, flags) \
+ do { \
+ for (i = 0; i < (len) && dend > d; i++) { \
+ if ((rspamd_url_encoding_classes[(unsigned char) (beg)[i]] & (flags)) == 0) { \
+ *d++ = '%'; \
+ *d++ = hexdigests[(unsigned char) ((beg)[i] >> 4) & 0xf]; \
+ *d++ = hexdigests[(unsigned char) (beg)[i] & 0xf]; \
+ } \
+ else { \
+ *d++ = (beg)[i]; \
+ } \
+ } \
} while (0)
-const gchar *
+const char *
rspamd_url_encode(struct rspamd_url *url, gsize *pdlen,
rspamd_mempool_t *pool)
{
- guchar *dest, *d, *dend;
- static const gchar hexdigests[16] = "0123456789ABCDEF";
- guint i;
+ unsigned char *dest, *d, *dend;
+ static const char hexdigests[16] = "0123456789ABCDEF";
+ unsigned int i;
gsize dlen = 0;
g_assert(pdlen != NULL && url != NULL && pool != NULL);
@@ -4051,19 +4051,19 @@ rspamd_url_encode(struct rspamd_url *url, gsize *pdlen,
if (url->protocollen > 0) {
if (!(url->protocol & PROTOCOL_UNKNOWN)) {
- const gchar *known_proto = rspamd_url_protocol_name(url->protocol);
- d += rspamd_snprintf((gchar *) d, dend - d,
+ const char *known_proto = rspamd_url_protocol_name(url->protocol);
+ d += rspamd_snprintf((char *) d, dend - d,
"%s://",
known_proto);
}
else {
- d += rspamd_snprintf((gchar *) d, dend - d,
+ d += rspamd_snprintf((char *) d, dend - d,
"%*s://",
- (gint) url->protocollen, url->string);
+ (int) url->protocollen, url->string);
}
}
else {
- d += rspamd_snprintf((gchar *) d, dend - d, "http://");
+ d += rspamd_snprintf((char *) d, dend - d, "http://");
}
if (url->userlen > 0) {
@@ -4095,19 +4095,19 @@ rspamd_url_encode(struct rspamd_url *url, gsize *pdlen,
*pdlen = (d - dest);
- return (const gchar *) dest;
+ return (const char *) dest;
}
gboolean
rspamd_url_is_domain(int c)
{
- return is_domain((guchar) c);
+ return is_domain((unsigned char) c);
}
-const gchar *
+const char *
rspamd_url_protocol_name(enum rspamd_url_protocol proto)
{
- const gchar *ret = "unknown";
+ const char *ret = "unknown";
switch (proto) {
case PROTOCOL_HTTP:
@@ -4136,7 +4136,7 @@ rspamd_url_protocol_name(enum rspamd_url_protocol proto)
}
enum rspamd_url_protocol
-rspamd_url_protocol_from_string(const gchar *str)
+rspamd_url_protocol_from_string(const char *str)
{
enum rspamd_url_protocol ret = PROTOCOL_UNKNOWN;
@@ -4168,7 +4168,7 @@ bool rspamd_url_set_add_or_increase(khash_t(rspamd_url_hash) * set,
bool enforce_replace)
{
khiter_t k;
- gint r;
+ int r;
k = kh_get(rspamd_url_hash, set, u);
@@ -4210,7 +4210,7 @@ rspamd_url_set_add_or_return(khash_t(rspamd_url_hash) * set,
struct rspamd_url *u)
{
khiter_t k;
- gint r;
+ int r;
if (set) {
k = kh_get(rspamd_url_hash, set, u);
@@ -4231,7 +4231,7 @@ rspamd_url_set_add_or_return(khash_t(rspamd_url_hash) * set,
bool rspamd_url_host_set_add(khash_t(rspamd_url_host_hash) * set,
struct rspamd_url *u)
{
- gint r;
+ int r;
if (set) {
kh_put(rspamd_url_host_hash, set, u, &r);
@@ -4280,10 +4280,10 @@ bool rspamd_url_host_set_has(khash_t(rspamd_url_host_hash) * set, struct rspamd_
return false;
}
-bool rspamd_url_flag_from_string(const gchar *str, gint *flag)
+bool rspamd_url_flag_from_string(const char *str, int *flag)
{
- gint h = rspamd_cryptobox_fast_hash_specific(RSPAMD_CRYPTOBOX_HASHFAST_INDEPENDENT,
- str, strlen(str), 0);
+ int h = rspamd_cryptobox_fast_hash_specific(RSPAMD_CRYPTOBOX_HASHFAST_INDEPENDENT,
+ str, strlen(str), 0);
for (int i = 0; i < G_N_ELEMENTS(url_flag_names); i++) {
if (url_flag_names[i].hash == h) {
@@ -4297,7 +4297,7 @@ bool rspamd_url_flag_from_string(const gchar *str, gint *flag)
}
-const gchar *
+const char *
rspamd_url_flag_to_string(int flag)
{
for (int i = 0; i < G_N_ELEMENTS(url_flag_names); i++) {