src/core/ngx_resolver.c:177: error: Integer Overflow L2
  ([0, +oo] - 5):unsigned64 by call to `ngx_parse_url`.

src/core/ngx_resolver.c:177:13: Call
175.         u.default_port = 53;
176. 
177.         if (ngx_parse_url(cf->pool, &u) != NGX_OK) {
                 ^
178.             if (u.err) {
179.                 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,

src/core/ngx_inet.c:514:1: Parameter `u->url.len`
  512. 
  513. 
  514. ngx_int_t
       ^
  515. ngx_parse_url(ngx_pool_t *pool, ngx_url_t *u)
  516. {

src/core/ngx_inet.c:522:16: Call
  520. 
  521.     if (ngx_strncasecmp(p, (u_char *) "unix:", 5) == 0) {
  522.         return ngx_parse_unix_domain_url(pool, u);
                      ^
  523.     }
  524. 

src/core/ngx_inet.c:533:1: <LHS trace>
531. 
532. 
533. static ngx_int_t
     ^
534. ngx_parse_unix_domain_url(ngx_pool_t *pool, ngx_url_t *u)
535. {

src/core/ngx_inet.c:533:1: Parameter `u->url.len`
    531. 
    532. 
    533. static ngx_int_t
         ^
    534. ngx_parse_unix_domain_url(ngx_pool_t *pool, ngx_url_t *u)
    535. {

src/core/ngx_inet.c:541:5: Assignment
    539.     struct sockaddr_un  *saun;
    540. 
    541.     len = u->url.len;
             ^
    542.     path = u->url.data;
    543. 

src/core/ngx_inet.c:545:5: Binary operation: ([0, +oo] - 5):unsigned64 by call to `ngx_parse_url` 
    543. 
    544.     path += 5;
    545.     len -= 5;
             ^
    546. 
    547.     if (u->uri_part) {

static ngx_int_t
ngx_parse_unix_domain_url(ngx_pool_t *pool, ngx_url_t *u)
{
#if (NGX_HAVE_UNIX_DOMAIN)
    u_char              *path, *uri, *last;
    size_t               len;
    struct sockaddr_un  *saun;
    len = u->url.len;
    path = u->url.data;
    path += 5;
    len -= 5;
    if (u->uri_part) {
        last = path + len;
        uri = ngx_strlchr(path, last, ':');
        if (uri) {
            len = uri - path;
            uri++;
            u->uri.len = last - uri;
            u->uri.data = uri;
        }
    }
    if (len == 0) {
        u->err = "no path in the unix domain socket";
        return NGX_ERROR;
    }
    u->host.len = len++;
    u->host.data = path;
    if (len > sizeof(saun->sun_path)) {
        u->err = "too long path in the unix domain socket";
        return NGX_ERROR;
    }
    u->socklen = sizeof(struct sockaddr_un);
    saun = (struct sockaddr_un *) &u->sockaddr;
    saun->sun_family = AF_UNIX;
    (void) ngx_cpystrn((u_char *) saun->sun_path, path, len);
    u->addrs = ngx_pcalloc(pool, sizeof(ngx_addr_t));
    if (u->addrs == NULL) {
        return NGX_ERROR;
    }
    saun = ngx_pcalloc(pool, sizeof(struct sockaddr_un));
    if (saun == NULL) {
        return NGX_ERROR;
    }
    u->family = AF_UNIX;
    u->naddrs = 1;
    saun->sun_family = AF_UNIX;
    (void) ngx_cpystrn((u_char *) saun->sun_path, path, len);
    u->addrs[0].sockaddr = (struct sockaddr *) saun;
    u->addrs[0].socklen = sizeof(struct sockaddr_un);
    u->addrs[0].name.len = len + 4;
    u->addrs[0].name.data = u->url.data;
    return NGX_OK;
#else
    u->err = "the unix domain sockets are not supported on this platform";
    return NGX_ERROR;
#endif
}
['ngx_resolver_t *\nngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n)\n{\n    ngx_str_t              s;\n    ngx_url_t              u;\n    ngx_uint_t             i;\n    ngx_resolver_t        *r;\n    ngx_pool_cleanup_t    *cln;\n    ngx_udp_connection_t  *uc;\n    cln = ngx_pool_cleanup_add(cf->pool, 0);\n    if (cln == NULL) {\n        return NULL;\n    }\n    cln->handler = ngx_resolver_cleanup;\n    r = ngx_calloc(sizeof(ngx_resolver_t), cf->log);\n    if (r == NULL) {\n        return NULL;\n    }\n    if (n) {\n        if (ngx_array_init(&r->udp_connections, cf->pool, n,\n                           sizeof(ngx_udp_connection_t))\n            != NGX_OK)\n        {\n            return NULL;\n        }\n    }\n    cln->data = r;\n    r->event = ngx_calloc(sizeof(ngx_event_t), cf->log);\n    if (r->event == NULL) {\n        return NULL;\n    }\n    ngx_rbtree_init(&r->name_rbtree, &r->name_sentinel,\n                    ngx_resolver_rbtree_insert_value);\n    ngx_rbtree_init(&r->addr_rbtree, &r->addr_sentinel,\n                    ngx_rbtree_insert_value);\n    ngx_queue_init(&r->name_resend_queue);\n    ngx_queue_init(&r->addr_resend_queue);\n    ngx_queue_init(&r->name_expire_queue);\n    ngx_queue_init(&r->addr_expire_queue);\n    r->event->handler = ngx_resolver_resend_handler;\n    r->event->data = r;\n    r->event->log = &cf->cycle->new_log;\n    r->ident = -1;\n    r->resend_timeout = 5;\n    r->expire = 30;\n    r->valid = 0;\n    r->log = &cf->cycle->new_log;\n    r->log_level = NGX_LOG_ERR;\n    for (i = 0; i < n; i++) {\n        if (ngx_strncmp(names[i].data, "valid=", 6) == 0) {\n            s.len = names[i].len - 6;\n            s.data = names[i].data + 6;\n            r->valid = ngx_parse_time(&s, 1);\n            if (r->valid == (time_t) NGX_ERROR) {\n                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,\n                                   "invalid parameter: %V", &names[i]);\n                return NULL;\n            }\n            continue;\n        }\n        ngx_memzero(&u, sizeof(ngx_url_t));\n        u.url = names[i];\n        u.default_port = 53;\n        if (ngx_parse_url(cf->pool, &u) != NGX_OK) {\n            if (u.err) {\n                ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,\n                                   "%s in resolver \\"%V\\"",\n                                   u.err, &u.url);\n            }\n            return NULL;\n        }\n        uc = ngx_array_push(&r->udp_connections);\n        if (uc == NULL) {\n            return NULL;\n        }\n        ngx_memzero(uc, sizeof(ngx_udp_connection_t));\n        uc->sockaddr = u.addrs->sockaddr;\n        uc->socklen = u.addrs->socklen;\n        uc->server = u.addrs->name;\n    }\n    return r;\n}', 'ngx_int_t\nngx_parse_url(ngx_pool_t *pool, ngx_url_t *u)\n{\n    u_char  *p;\n    p = u->url.data;\n    if (ngx_strncasecmp(p, (u_char *) "unix:", 5) == 0) {\n        return ngx_parse_unix_domain_url(pool, u);\n    }\n    if (p[0] == \'[\') {\n        return ngx_parse_inet6_url(pool, u);\n    }\n    return ngx_parse_inet_url(pool, u);\n}', 'static ngx_int_t\nngx_parse_unix_domain_url(ngx_pool_t *pool, ngx_url_t *u)\n{\n#if (NGX_HAVE_UNIX_DOMAIN)\n    u_char              *path, *uri, *last;\n    size_t               len;\n    struct sockaddr_un  *saun;\n    len = u->url.len;\n    path = u->url.data;\n    path += 5;\n    len -= 5;\n    if (u->uri_part) {\n        last = path + len;\n        uri = ngx_strlchr(path, last, \':\');\n        if (uri) {\n            len = uri - path;\n            uri++;\n            u->uri.len = last - uri;\n            u->uri.data = uri;\n        }\n    }\n    if (len == 0) {\n        u->err = "no path in the unix domain socket";\n        return NGX_ERROR;\n    }\n    u->host.len = len++;\n    u->host.data = path;\n    if (len > sizeof(saun->sun_path)) {\n        u->err = "too long path in the unix domain socket";\n        return NGX_ERROR;\n    }\n    u->socklen = sizeof(struct sockaddr_un);\n    saun = (struct sockaddr_un *) &u->sockaddr;\n    saun->sun_family = AF_UNIX;\n    (void) ngx_cpystrn((u_char *) saun->sun_path, path, len);\n    u->addrs = ngx_pcalloc(pool, sizeof(ngx_addr_t));\n    if (u->addrs == NULL) {\n        return NGX_ERROR;\n    }\n    saun = ngx_pcalloc(pool, sizeof(struct sockaddr_un));\n    if (saun == NULL) {\n        return NGX_ERROR;\n    }\n    u->family = AF_UNIX;\n    u->naddrs = 1;\n    saun->sun_family = AF_UNIX;\n    (void) ngx_cpystrn((u_char *) saun->sun_path, path, len);\n    u->addrs[0].sockaddr = (struct sockaddr *) saun;\n    u->addrs[0].socklen = sizeof(struct sockaddr_un);\n    u->addrs[0].name.len = len + 4;\n    u->addrs[0].name.data = u->url.data;\n    return NGX_OK;\n#else\n    u->err = "the unix domain sockets are not supported on this platform";\n    return NGX_ERROR;\n#endif\n}']