src/http/modules/ngx_http_scgi_module.c:1866: error: Integer Overflow L2
  ([0, 9223372036854775800] + [0, 9]):signed64 by call to `ngx_http_upstream_add`.

src/http/modules/ngx_http_scgi_module.c:1861:5: Unknown value from: __infer_skip
1859.     }
1860. 
1861.     ngx_memzero(&u, sizeof(ngx_url_t));
          ^
1862. 
1863.     u.url = value[1];

src/http/modules/ngx_http_scgi_module.c:1866:30: Call
1864.     u.no_resolve = 1;
1865. 
1866.     scf->upstream.upstream = ngx_http_upstream_add(cf, &u, 0);
                                   ^
1867.     if (scf->upstream.upstream == NULL) {
1868.         return NGX_CONF_ERROR;

src/http/ngx_http_upstream.c:5968:1: Parameter `*u->url.data`
  5966. 
  5967. 
  5968. ngx_http_upstream_srv_conf_t *
        ^
  5969. ngx_http_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags)
  5970. {

src/http/ngx_http_upstream.c:5978:13: Call
  5976.     if (!(flags & NGX_HTTP_UPSTREAM_CREATE)) {
  5977. 
  5978.         if (ngx_parse_url(cf->pool, u) != NGX_OK) {
                    ^
  5979.             if (u->err) {
  5980.                 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,

src/core/ngx_inet.c:683:1: Parameter `*u->url.data`
    681. 
    682. 
    683. ngx_int_t
         ^
    684. ngx_parse_url(ngx_pool_t *pool, ngx_url_t *u)
    685. {

src/core/ngx_inet.c:700:12: Call
    698.     }
    699. 
    700.     return ngx_parse_inet_url(pool, u);
                    ^
    701. }
    702. 

src/core/ngx_inet.c:782:1: Parameter `*u->url.data`
      780. 
      781. 
      782. static ngx_int_t
           ^
      783. ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u)
      784. {

src/core/ngx_inet.c:800:12: Call
      798.     last = host + u->url.len;
      799. 
      800.     port = ngx_strlchr(host, last, ':');
                      ^
      801. 
      802.     uri = ngx_strlchr(host, last, '/');

src/core/ngx_string.h:67:1: Parameter `c`
        65. #define ngx_strchr(s1, c)   strchr((const char *) s1, (int) c)
        66. 
        67. static ngx_inline u_char *
            ^
        68. ngx_strlchr(u_char *p, u_char *last, u_char c)
        69. {

src/core/ngx_inet.c:802:11: Call
      800.     port = ngx_strlchr(host, last, ':');
      801. 
      802.     uri = ngx_strlchr(host, last, '/');
                     ^
      803. 
      804.     args = ngx_strlchr(host, last, '?');

src/core/ngx_string.h:67:1: Parameter `c`
        65. #define ngx_strchr(s1, c)   strchr((const char *) s1, (int) c)
        66. 
        67. static ngx_inline u_char *
            ^
        68. ngx_strlchr(u_char *p, u_char *last, u_char c)
        69. {

src/core/ngx_inet.c:804:12: Call
      802.     uri = ngx_strlchr(host, last, '/');
      803. 
      804.     args = ngx_strlchr(host, last, '?');
                      ^
      805. 
      806.     if (args) {

src/core/ngx_string.h:67:1: Parameter `c`
        65. #define ngx_strchr(s1, c)   strchr((const char *) s1, (int) c)
        66. 
        67. static ngx_inline u_char *
            ^
        68. ngx_strlchr(u_char *p, u_char *last, u_char c)
        69. {

src/core/ngx_inet.c:834:20: Call
      832. 
      833.         if (u->listen) {
      834.             dash = ngx_strlchr(port, last, '-');
                              ^
      835. 
      836.             if (dash) {

src/core/ngx_string.h:67:1: Parameter `c`
        65. #define ngx_strchr(s1, c)   strchr((const char *) s1, (int) c)
        66. 
        67. static ngx_inline u_char *
            ^
        68. ngx_strlchr(u_char *p, u_char *last, u_char c)
        69. {

src/core/ngx_inet.c:839:21: Call
      837.                 dash++;
      838. 
      839.                 n = ngx_atoi(dash, last - dash);
                               ^
      840. 
      841.                 if (n < 1 || n > 65535) {

src/core/ngx_string.c:926:5: <LHS trace>
924.     }
925. 
926.     cutoff = NGX_MAX_INT_T_VALUE / 10;
         ^
927.     cutlim = NGX_MAX_INT_T_VALUE % 10;
928. 

src/core/ngx_string.c:926:5: Assignment
        924.     }
        925. 
        926.     cutoff = NGX_MAX_INT_T_VALUE / 10;
                 ^
        927.     cutlim = NGX_MAX_INT_T_VALUE % 10;
        928. 

src/core/ngx_string.c:917:1: <RHS trace>
915. 
916. 
917. ngx_int_t
     ^
918. ngx_atoi(u_char *line, size_t n)
919. {

src/core/ngx_string.c:917:1: Parameter `*line`
        915. 
        916. 
        917. ngx_int_t
             ^
        918. ngx_atoi(u_char *line, size_t n)
        919. {

src/core/ngx_string.c:938:9: Binary operation: ([0, 9223372036854775800] + [0, 9]):signed64 by call to `ngx_http_upstream_add` 
        936.         }
        937. 
        938.         value = value * 10 + (*line - '0');
                     ^
        939.     }
        940. 

ngx_int_t
ngx_atoi(u_char *line, size_t n)
{
    ngx_int_t  value, cutoff, cutlim;
    if (n == 0) {
        return NGX_ERROR;
    }
    cutoff = NGX_MAX_INT_T_VALUE / 10;
    cutlim = NGX_MAX_INT_T_VALUE % 10;
    for (value = 0; n--; line++) {
        if (*line < '0' || *line > '9') {
            return NGX_ERROR;
        }
        if (value >= cutoff && (value > cutoff || *line - '0' > cutlim)) {
            return NGX_ERROR;
        }
        value = value * 10 + (*line - '0');
    }
    return value;
}
['static char *\nngx_http_scgi_pass(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)\n{\n    ngx_http_scgi_loc_conf_t *scf = conf;\n    ngx_url_t                   u;\n    ngx_str_t                  *value, *url;\n    ngx_uint_t                  n;\n    ngx_http_core_loc_conf_t   *clcf;\n    ngx_http_script_compile_t   sc;\n    if (scf->upstream.upstream || scf->scgi_lengths) {\n        return "is duplicate";\n    }\n    clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);\n    clcf->handler = ngx_http_scgi_handler;\n    value = cf->args->elts;\n    url = &value[1];\n    n = ngx_http_script_variables_count(url);\n    if (n) {\n        ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));\n        sc.cf = cf;\n        sc.source = url;\n        sc.lengths = &scf->scgi_lengths;\n        sc.values = &scf->scgi_values;\n        sc.variables = n;\n        sc.complete_lengths = 1;\n        sc.complete_values = 1;\n        if (ngx_http_script_compile(&sc) != NGX_OK) {\n            return NGX_CONF_ERROR;\n        }\n        return NGX_CONF_OK;\n    }\n    ngx_memzero(&u, sizeof(ngx_url_t));\n    u.url = value[1];\n    u.no_resolve = 1;\n    scf->upstream.upstream = ngx_http_upstream_add(cf, &u, 0);\n    if (scf->upstream.upstream == NULL) {\n        return NGX_CONF_ERROR;\n    }\n    if (clcf->name.len && clcf->name.data[clcf->name.len - 1] == \'/\') {\n        clcf->auto_redirect = 1;\n    }\n    return NGX_CONF_OK;\n}', 'ngx_http_upstream_srv_conf_t *\nngx_http_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags)\n{\n    ngx_uint_t                      i;\n    ngx_http_upstream_server_t     *us;\n    ngx_http_upstream_srv_conf_t   *uscf, **uscfp;\n    ngx_http_upstream_main_conf_t  *umcf;\n    if (!(flags & NGX_HTTP_UPSTREAM_CREATE)) {\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 upstream \\"%V\\"", u->err, &u->url);\n            }\n            return NULL;\n        }\n    }\n    umcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_upstream_module);\n    uscfp = umcf->upstreams.elts;\n    for (i = 0; i < umcf->upstreams.nelts; i++) {\n        if (uscfp[i]->host.len != u->host.len\n            || ngx_strncasecmp(uscfp[i]->host.data, u->host.data, u->host.len)\n               != 0)\n        {\n            continue;\n        }\n        if ((flags & NGX_HTTP_UPSTREAM_CREATE)\n             && (uscfp[i]->flags & NGX_HTTP_UPSTREAM_CREATE))\n        {\n            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,\n                               "duplicate upstream \\"%V\\"", &u->host);\n            return NULL;\n        }\n        if ((uscfp[i]->flags & NGX_HTTP_UPSTREAM_CREATE) && !u->no_port) {\n            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,\n                               "upstream \\"%V\\" may not have port %d",\n                               &u->host, u->port);\n            return NULL;\n        }\n        if ((flags & NGX_HTTP_UPSTREAM_CREATE) && !uscfp[i]->no_port) {\n            ngx_log_error(NGX_LOG_EMERG, cf->log, 0,\n                          "upstream \\"%V\\" may not have port %d in %s:%ui",\n                          &u->host, uscfp[i]->port,\n                          uscfp[i]->file_name, uscfp[i]->line);\n            return NULL;\n        }\n        if (uscfp[i]->port && u->port\n            && uscfp[i]->port != u->port)\n        {\n            continue;\n        }\n        if (flags & NGX_HTTP_UPSTREAM_CREATE) {\n            uscfp[i]->flags = flags;\n            uscfp[i]->port = 0;\n        }\n        return uscfp[i];\n    }\n    uscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_upstream_srv_conf_t));\n    if (uscf == NULL) {\n        return NULL;\n    }\n    uscf->flags = flags;\n    uscf->host = u->host;\n    uscf->file_name = cf->conf_file->file.name.data;\n    uscf->line = cf->conf_file->line;\n    uscf->port = u->port;\n    uscf->no_port = u->no_port;\n    if (u->naddrs == 1 && (u->port || u->family == AF_UNIX)) {\n        uscf->servers = ngx_array_create(cf->pool, 1,\n                                         sizeof(ngx_http_upstream_server_t));\n        if (uscf->servers == NULL) {\n            return NULL;\n        }\n        us = ngx_array_push(uscf->servers);\n        if (us == NULL) {\n            return NULL;\n        }\n        ngx_memzero(us, sizeof(ngx_http_upstream_server_t));\n        us->addrs = u->addrs;\n        us->naddrs = 1;\n    }\n    uscfp = ngx_array_push(&umcf->upstreams);\n    if (uscfp == NULL) {\n        return NULL;\n    }\n    *uscfp = uscf;\n    return uscf;\n}', 'ngx_int_t\nngx_parse_url(ngx_pool_t *pool, ngx_url_t *u)\n{\n    u_char  *p;\n    size_t   len;\n    p = u->url.data;\n    len = u->url.len;\n    if (len >= 5 && ngx_strncasecmp(p, (u_char *) "unix:", 5) == 0) {\n        return ngx_parse_unix_domain_url(pool, u);\n    }\n    if (len && 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_inet_url(ngx_pool_t *pool, ngx_url_t *u)\n{\n    u_char              *host, *port, *last, *uri, *args, *dash;\n    size_t               len;\n    ngx_int_t            n;\n    struct sockaddr_in  *sin;\n    u->socklen = sizeof(struct sockaddr_in);\n    sin = (struct sockaddr_in *) &u->sockaddr;\n    sin->sin_family = AF_INET;\n    u->family = AF_INET;\n    host = u->url.data;\n    last = host + u->url.len;\n    port = ngx_strlchr(host, last, \':\');\n    uri = ngx_strlchr(host, last, \'/\');\n    args = ngx_strlchr(host, last, \'?\');\n    if (args) {\n        if (uri == NULL || args < uri) {\n            uri = args;\n        }\n    }\n    if (uri) {\n        if (u->listen || !u->uri_part) {\n            u->err = "invalid host";\n            return NGX_ERROR;\n        }\n        u->uri.len = last - uri;\n        u->uri.data = uri;\n        last = uri;\n        if (uri < port) {\n            port = NULL;\n        }\n    }\n    if (port) {\n        port++;\n        len = last - port;\n        if (u->listen) {\n            dash = ngx_strlchr(port, last, \'-\');\n            if (dash) {\n                dash++;\n                n = ngx_atoi(dash, last - dash);\n                if (n < 1 || n > 65535) {\n                    u->err = "invalid port";\n                    return NGX_ERROR;\n                }\n                u->last_port = (in_port_t) n;\n                len = dash - port - 1;\n            }\n        }\n        n = ngx_atoi(port, len);\n        if (n < 1 || n > 65535) {\n            u->err = "invalid port";\n            return NGX_ERROR;\n        }\n        if (u->last_port && n > u->last_port) {\n            u->err = "invalid port range";\n            return NGX_ERROR;\n        }\n        u->port = (in_port_t) n;\n        sin->sin_port = htons((in_port_t) n);\n        u->port_text.len = last - port;\n        u->port_text.data = port;\n        last = port - 1;\n    } else {\n        if (uri == NULL) {\n            if (u->listen) {\n                len = last - host;\n                dash = ngx_strlchr(host, last, \'-\');\n                if (dash) {\n                    dash++;\n                    n = ngx_atoi(dash, last - dash);\n                    if (n == NGX_ERROR) {\n                        goto no_port;\n                    }\n                    if (n < 1 || n > 65535) {\n                        u->err = "invalid port";\n                    } else {\n                        u->last_port = (in_port_t) n;\n                    }\n                    len = dash - host - 1;\n                }\n                n = ngx_atoi(host, len);\n                if (n != NGX_ERROR) {\n                    if (u->err) {\n                        return NGX_ERROR;\n                    }\n                    if (n < 1 || n > 65535) {\n                        u->err = "invalid port";\n                        return NGX_ERROR;\n                    }\n                    if (u->last_port && n > u->last_port) {\n                        u->err = "invalid port range";\n                        return NGX_ERROR;\n                    }\n                    u->port = (in_port_t) n;\n                    sin->sin_port = htons((in_port_t) n);\n                    sin->sin_addr.s_addr = INADDR_ANY;\n                    u->port_text.len = last - host;\n                    u->port_text.data = host;\n                    u->wildcard = 1;\n                    return ngx_inet_add_addr(pool, u, &u->sockaddr.sockaddr,\n                                             u->socklen, 1);\n                }\n            }\n        }\nno_port:\n        u->err = NULL;\n        u->no_port = 1;\n        u->port = u->default_port;\n        sin->sin_port = htons(u->default_port);\n        u->last_port = 0;\n    }\n    len = last - host;\n    if (len == 0) {\n        u->err = "no host";\n        return NGX_ERROR;\n    }\n    u->host.len = len;\n    u->host.data = host;\n    if (u->listen && len == 1 && *host == \'*\') {\n        sin->sin_addr.s_addr = INADDR_ANY;\n        u->wildcard = 1;\n        return ngx_inet_add_addr(pool, u, &u->sockaddr.sockaddr, u->socklen, 1);\n    }\n    sin->sin_addr.s_addr = ngx_inet_addr(host, len);\n    if (sin->sin_addr.s_addr != INADDR_NONE) {\n        if (sin->sin_addr.s_addr == INADDR_ANY) {\n            u->wildcard = 1;\n        }\n        return ngx_inet_add_addr(pool, u, &u->sockaddr.sockaddr, u->socklen, 1);\n    }\n    if (u->no_resolve) {\n        return NGX_OK;\n    }\n    if (ngx_inet_resolve_host(pool, u) != NGX_OK) {\n        return NGX_ERROR;\n    }\n    u->family = u->addrs[0].sockaddr->sa_family;\n    u->socklen = u->addrs[0].socklen;\n    ngx_memcpy(&u->sockaddr, u->addrs[0].sockaddr, u->addrs[0].socklen);\n    u->wildcard = ngx_inet_wildcard(&u->sockaddr.sockaddr);\n    return NGX_OK;\n}', 'static ngx_inline u_char *\nngx_strlchr(u_char *p, u_char *last, u_char c)\n{\n    while (p < last) {\n        if (*p == c) {\n            return p;\n        }\n        p++;\n    }\n    return NULL;\n}', "ngx_int_t\nngx_atoi(u_char *line, size_t n)\n{\n    ngx_int_t  value, cutoff, cutlim;\n    if (n == 0) {\n        return NGX_ERROR;\n    }\n    cutoff = NGX_MAX_INT_T_VALUE / 10;\n    cutlim = NGX_MAX_INT_T_VALUE % 10;\n    for (value = 0; n--; line++) {\n        if (*line < '0' || *line > '9') {\n            return NGX_ERROR;\n        }\n        if (value >= cutoff && (value > cutoff || *line - '0' > cutlim)) {\n            return NGX_ERROR;\n        }\n        value = value * 10 + (*line - '0');\n    }\n    return value;\n}"]