src/http/modules/ngx_http_proxy_module.c:3657: error: Integer Overflow L2
  ([0, +oo] - 1):unsigned64.

src/http/modules/ngx_http_proxy_module.c:3650:13: <LHS trace>
3648.         ccv.complex_value = &pr->pattern.complex;
3649. 
3650.         if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
                  ^
3651.             return NGX_CONF_ERROR;
3652.         }

src/http/modules/ngx_http_proxy_module.c:3650:13: Call
3648.         ccv.complex_value = &pr->pattern.complex;
3649. 
3650.         if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
                  ^
3651.             return NGX_CONF_ERROR;
3652.         }

src/http/ngx_http_script.c:107:1: Parameter `ccv->value->len`
  105. 
  106. 
  107. ngx_int_t
       ^
  108. ngx_http_compile_complex_value(ngx_http_compile_complex_value_t *ccv)
  109. {

src/http/modules/ngx_http_proxy_module.c:3657:13: Binary operation: ([0, +oo] - 1):unsigned64
3655. 
3656.         if (value[2].data[0] == '.') {
3657.             value[2].len--;
                  ^
3658.             value[2].data++;
3659.         }

static char *
ngx_http_proxy_cookie_domain(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
    ngx_http_proxy_loc_conf_t *plcf = conf;
    ngx_str_t                         *value;
    ngx_http_proxy_rewrite_t          *pr;
    ngx_http_compile_complex_value_t   ccv;
    if (plcf->cookie_domains == NULL) {
        return NGX_CONF_OK;
    }
    value = cf->args->elts;
    if (cf->args->nelts == 2) {
        if (ngx_strcmp(value[1].data, "off") == 0) {
            plcf->cookie_domains = NULL;
            return NGX_CONF_OK;
        }
        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
                           "invalid parameter \"%V\"", &value[1]);
        return NGX_CONF_ERROR;
    }
    if (plcf->cookie_domains == NGX_CONF_UNSET_PTR) {
        plcf->cookie_domains = ngx_array_create(cf->pool, 1,
                                     sizeof(ngx_http_proxy_rewrite_t));
        if (plcf->cookie_domains == NULL) {
            return NGX_CONF_ERROR;
        }
    }
    pr = ngx_array_push(plcf->cookie_domains);
    if (pr == NULL) {
        return NGX_CONF_ERROR;
    }
    if (value[1].data[0] == '~') {
        value[1].len--;
        value[1].data++;
        if (ngx_http_proxy_rewrite_regex(cf, pr, &value[1], 1) != NGX_OK) {
            return NGX_CONF_ERROR;
        }
    } else {
        if (value[1].data[0] == '.') {
            value[1].len--;
            value[1].data++;
        }
        ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
        ccv.cf = cf;
        ccv.value = &value[1];
        ccv.complex_value = &pr->pattern.complex;
        if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
            return NGX_CONF_ERROR;
        }
        pr->handler = ngx_http_proxy_rewrite_domain_handler;
        if (value[2].data[0] == '.') {
            value[2].len--;
            value[2].data++;
        }
    }
    ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
    ccv.cf = cf;
    ccv.value = &value[2];
    ccv.complex_value = &pr->replacement;
    if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
        return NGX_CONF_ERROR;
    }
    return NGX_CONF_OK;
}
['static char *\nngx_http_proxy_cookie_domain(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)\n{\n    ngx_http_proxy_loc_conf_t *plcf = conf;\n    ngx_str_t                         *value;\n    ngx_http_proxy_rewrite_t          *pr;\n    ngx_http_compile_complex_value_t   ccv;\n    if (plcf->cookie_domains == NULL) {\n        return NGX_CONF_OK;\n    }\n    value = cf->args->elts;\n    if (cf->args->nelts == 2) {\n        if (ngx_strcmp(value[1].data, "off") == 0) {\n            plcf->cookie_domains = NULL;\n            return NGX_CONF_OK;\n        }\n        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,\n                           "invalid parameter \\"%V\\"", &value[1]);\n        return NGX_CONF_ERROR;\n    }\n    if (plcf->cookie_domains == NGX_CONF_UNSET_PTR) {\n        plcf->cookie_domains = ngx_array_create(cf->pool, 1,\n                                     sizeof(ngx_http_proxy_rewrite_t));\n        if (plcf->cookie_domains == NULL) {\n            return NGX_CONF_ERROR;\n        }\n    }\n    pr = ngx_array_push(plcf->cookie_domains);\n    if (pr == NULL) {\n        return NGX_CONF_ERROR;\n    }\n    if (value[1].data[0] == \'~\') {\n        value[1].len--;\n        value[1].data++;\n        if (ngx_http_proxy_rewrite_regex(cf, pr, &value[1], 1) != NGX_OK) {\n            return NGX_CONF_ERROR;\n        }\n    } else {\n        if (value[1].data[0] == \'.\') {\n            value[1].len--;\n            value[1].data++;\n        }\n        ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));\n        ccv.cf = cf;\n        ccv.value = &value[1];\n        ccv.complex_value = &pr->pattern.complex;\n        if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {\n            return NGX_CONF_ERROR;\n        }\n        pr->handler = ngx_http_proxy_rewrite_domain_handler;\n        if (value[2].data[0] == \'.\') {\n            value[2].len--;\n            value[2].data++;\n        }\n    }\n    ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));\n    ccv.cf = cf;\n    ccv.value = &value[2];\n    ccv.complex_value = &pr->replacement;\n    if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {\n        return NGX_CONF_ERROR;\n    }\n    return NGX_CONF_OK;\n}', 'ngx_int_t\nngx_http_compile_complex_value(ngx_http_compile_complex_value_t *ccv)\n{\n    ngx_str_t                  *v;\n    ngx_uint_t                  i, n, nv, nc;\n    ngx_array_t                 flushes, lengths, values, *pf, *pl, *pv;\n    ngx_http_script_compile_t   sc;\n    v = ccv->value;\n    if (v->len == 0) {\n        ngx_conf_log_error(NGX_LOG_EMERG, ccv->cf, 0, "empty parameter");\n        return NGX_ERROR;\n    }\n    nv = 0;\n    nc = 0;\n    for (i = 0; i < v->len; i++) {\n        if (v->data[i] == \'$\') {\n            if (v->data[i + 1] >= \'1\' && v->data[i + 1] <= \'9\') {\n                nc++;\n            } else {\n                nv++;\n            }\n        }\n    }\n    if (v->data[0] != \'$\' && (ccv->conf_prefix || ccv->root_prefix)) {\n        if (ngx_conf_full_name(ccv->cf->cycle, v, ccv->conf_prefix) != NGX_OK) {\n            return NGX_ERROR;\n        }\n        ccv->conf_prefix = 0;\n        ccv->root_prefix = 0;\n    }\n    ccv->complex_value->value = *v;\n    ccv->complex_value->flushes = NULL;\n    ccv->complex_value->lengths = NULL;\n    ccv->complex_value->values = NULL;\n    if (nv == 0 && nc == 0) {\n        return NGX_OK;\n    }\n    n = nv + 1;\n    if (ngx_array_init(&flushes, ccv->cf->pool, n, sizeof(ngx_uint_t))\n        != NGX_OK)\n    {\n        return NGX_ERROR;\n    }\n    n = nv * (2 * sizeof(ngx_http_script_copy_code_t)\n                  + sizeof(ngx_http_script_var_code_t))\n        + sizeof(uintptr_t);\n    if (ngx_array_init(&lengths, ccv->cf->pool, n, 1) != NGX_OK) {\n        return NGX_ERROR;\n    }\n    n = (nv * (2 * sizeof(ngx_http_script_copy_code_t)\n                   + sizeof(ngx_http_script_var_code_t))\n                + sizeof(uintptr_t)\n                + v->len\n                + sizeof(uintptr_t) - 1)\n            & ~(sizeof(uintptr_t) - 1);\n    if (ngx_array_init(&values, ccv->cf->pool, n, 1) != NGX_OK) {\n        return NGX_ERROR;\n    }\n    pf = &flushes;\n    pl = &lengths;\n    pv = &values;\n    ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));\n    sc.cf = ccv->cf;\n    sc.source = v;\n    sc.flushes = &pf;\n    sc.lengths = &pl;\n    sc.values = &pv;\n    sc.complete_lengths = 1;\n    sc.complete_values = 1;\n    sc.zero = ccv->zero;\n    sc.conf_prefix = ccv->conf_prefix;\n    sc.root_prefix = ccv->root_prefix;\n    if (ngx_http_script_compile(&sc) != NGX_OK) {\n        return NGX_ERROR;\n    }\n    if (flushes.nelts) {\n        ccv->complex_value->flushes = flushes.elts;\n        ccv->complex_value->flushes[flushes.nelts] = (ngx_uint_t) -1;\n    }\n    ccv->complex_value->lengths = lengths.elts;\n    ccv->complex_value->values = values.elts;\n    return NGX_OK;\n}']