src/http/ngx_http_core_module.c:2323: error: Integer Overflow L2
  ([0, +oo] - 1):unsigned64 by call to `ngx_http_set_exten`.

src/http/ngx_http_core_module.c:2323:5: Call
2321.     sr->schema = r->schema;
2322. 
2323.     ngx_http_set_exten(sr);
          ^
2324. 
2325.     sr->main = r->main;

src/http/ngx_http_core_module.c:1557:1: <LHS trace>
1555. 
1556. 
1557. void
      ^
1558. ngx_http_set_exten(ngx_http_request_t *r)
1559. {

src/http/ngx_http_core_module.c:1557:1: Parameter `r->uri.len`
  1555. 
  1556. 
  1557. void
        ^
  1558. ngx_http_set_exten(ngx_http_request_t *r)
  1559. {

src/http/ngx_http_core_module.c:1564:10: Binary operation: ([0, +oo] - 1):unsigned64 by call to `ngx_http_set_exten` 
  1562.     ngx_str_null(&r->exten);
  1563. 
  1564.     for (i = r->uri.len - 1; i > 1; i--) {
                 ^
  1565.         if (r->uri.data[i] == '.' && r->uri.data[i - 1] != '/') {
  1566. 

void
ngx_http_set_exten(ngx_http_request_t *r)
{
    ngx_int_t  i;
    ngx_str_null(&r->exten);
    for (i = r->uri.len - 1; i > 1; i--) {
        if (r->uri.data[i] == '.' && r->uri.data[i - 1] != '/') {
            r->exten.len = r->uri.len - i - 1;
            r->exten.data = &r->uri.data[i + 1];
            return;
        } else if (r->uri.data[i] == '/') {
            return;
        }
    }
    return;
}
['ngx_int_t\nngx_http_subrequest(ngx_http_request_t *r,\n    ngx_str_t *uri, ngx_str_t *args, ngx_http_request_t **psr,\n    ngx_http_post_subrequest_t *ps, ngx_uint_t flags)\n{\n    ngx_time_t                    *tp;\n    ngx_connection_t              *c;\n    ngx_http_request_t            *sr;\n    ngx_http_core_srv_conf_t      *cscf;\n    ngx_http_postponed_request_t  *pr, *p;\n    if (r->subrequests == 0) {\n        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,\n                      "subrequests cycle while processing \\"%V\\"", uri);\n        return NGX_ERROR;\n    }\n    if (r->main->count >= 65535 - 1000) {\n        ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0,\n                      "request reference counter overflow "\n                      "while processing \\"%V\\"", uri);\n        return NGX_ERROR;\n    }\n    if (r->subrequest_in_memory) {\n        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,\n                      "nested in-memory subrequest \\"%V\\"", uri);\n        return NGX_ERROR;\n    }\n    sr = ngx_pcalloc(r->pool, sizeof(ngx_http_request_t));\n    if (sr == NULL) {\n        return NGX_ERROR;\n    }\n    sr->signature = NGX_HTTP_MODULE;\n    c = r->connection;\n    sr->connection = c;\n    sr->ctx = ngx_pcalloc(r->pool, sizeof(void *) * ngx_http_max_module);\n    if (sr->ctx == NULL) {\n        return NGX_ERROR;\n    }\n    if (ngx_list_init(&sr->headers_out.headers, r->pool, 20,\n                      sizeof(ngx_table_elt_t))\n        != NGX_OK)\n    {\n        return NGX_ERROR;\n    }\n    if (ngx_list_init(&sr->headers_out.trailers, r->pool, 4,\n                      sizeof(ngx_table_elt_t))\n        != NGX_OK)\n    {\n        return NGX_ERROR;\n    }\n    cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);\n    sr->main_conf = cscf->ctx->main_conf;\n    sr->srv_conf = cscf->ctx->srv_conf;\n    sr->loc_conf = cscf->ctx->loc_conf;\n    sr->pool = r->pool;\n    sr->headers_in = r->headers_in;\n    ngx_http_clear_content_length(sr);\n    ngx_http_clear_accept_ranges(sr);\n    ngx_http_clear_last_modified(sr);\n    sr->request_body = r->request_body;\n#if (NGX_HTTP_V2)\n    sr->stream = r->stream;\n#endif\n    sr->method = NGX_HTTP_GET;\n    sr->http_version = r->http_version;\n    sr->request_line = r->request_line;\n    sr->uri = *uri;\n    if (args) {\n        sr->args = *args;\n    }\n    ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,\n                   "http subrequest \\"%V?%V\\"", uri, &sr->args);\n    sr->subrequest_in_memory = (flags & NGX_HTTP_SUBREQUEST_IN_MEMORY) != 0;\n    sr->waited = (flags & NGX_HTTP_SUBREQUEST_WAITED) != 0;\n    sr->background = (flags & NGX_HTTP_SUBREQUEST_BACKGROUND) != 0;\n    sr->unparsed_uri = r->unparsed_uri;\n    sr->method_name = ngx_http_core_get_method;\n    sr->http_protocol = r->http_protocol;\n    sr->schema = r->schema;\n    ngx_http_set_exten(sr);\n    sr->main = r->main;\n    sr->parent = r;\n    sr->post_subrequest = ps;\n    sr->read_event_handler = ngx_http_request_empty_handler;\n    sr->write_event_handler = ngx_http_handler;\n    sr->variables = r->variables;\n    sr->log_handler = r->log_handler;\n    if (sr->subrequest_in_memory) {\n        sr->filter_need_in_memory = 1;\n    }\n    if (!sr->background) {\n        if (c->data == r && r->postponed == NULL) {\n            c->data = sr;\n        }\n        pr = ngx_palloc(r->pool, sizeof(ngx_http_postponed_request_t));\n        if (pr == NULL) {\n            return NGX_ERROR;\n        }\n        pr->request = sr;\n        pr->out = NULL;\n        pr->next = NULL;\n        if (r->postponed) {\n            for (p = r->postponed; p->next; p = p->next) {   }\n            p->next = pr;\n        } else {\n            r->postponed = pr;\n        }\n    }\n    sr->internal = 1;\n    sr->discard_body = r->discard_body;\n    sr->expect_tested = 1;\n    sr->main_filter_need_in_memory = r->main_filter_need_in_memory;\n    sr->uri_changes = NGX_HTTP_MAX_URI_CHANGES + 1;\n    sr->subrequests = r->subrequests - 1;\n    tp = ngx_timeofday();\n    sr->start_sec = tp->sec;\n    sr->start_msec = tp->msec;\n    r->main->count++;\n    *psr = sr;\n    if (flags & NGX_HTTP_SUBREQUEST_CLONE) {\n        sr->method = r->method;\n        sr->method_name = r->method_name;\n        sr->loc_conf = r->loc_conf;\n        sr->valid_location = r->valid_location;\n        sr->valid_unparsed_uri = r->valid_unparsed_uri;\n        sr->content_handler = r->content_handler;\n        sr->phase_handler = r->phase_handler;\n        sr->write_event_handler = ngx_http_core_run_phases;\n        ngx_http_update_location_config(sr);\n    }\n    return ngx_http_post_request(sr, NULL);\n}', "void\nngx_http_set_exten(ngx_http_request_t *r)\n{\n    ngx_int_t  i;\n    ngx_str_null(&r->exten);\n    for (i = r->uri.len - 1; i > 1; i--) {\n        if (r->uri.data[i] == '.' && r->uri.data[i - 1] != '/') {\n            r->exten.len = r->uri.len - i - 1;\n            r->exten.data = &r->uri.data[i + 1];\n            return;\n        } else if (r->uri.data[i] == '/') {\n            return;\n        }\n    }\n    return;\n}"]