diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cookie.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/cookie.c b/lib/cookie.c index 027fa0977..ec3b1bf9a 100644 --- a/lib/cookie.c +++ b/lib/cookie.c @@ -246,26 +246,23 @@ pathmatched: static const char *get_top_domain(const char * const domain, size_t *outlen) { size_t len; - const char *first, *last; + const char *first = NULL, *last; if(!domain) return NULL; len = strlen(domain); - first = memchr(domain, '.', len); last = memrchr(domain, '.', len); + if(last) { + first = memrchr(domain, '.', (size_t) (last - domain)); + if(first) + len -= (size_t) (++first - domain); + } if(outlen) *outlen = len; - if(first == last) - return domain; - - first = memrchr(domain, '.', (size_t)(last - domain - 1)); - if(outlen) - *outlen = len - (size_t)(first - domain) - 1; - - return first + 1; + return first? first: domain; } /* |