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

src/http/modules/ngx_http_access_module.c:313:5: Unknown value from: __infer_skip
311. 
312.     all = 0;
313.     ngx_memzero(&cidr, sizeof(ngx_cidr_t));
         ^
314. 
315.     value = cf->args->elts;

src/http/modules/ngx_http_access_module.c:326:14: Call
324. 
325.     } else {
326.         rc = ngx_ptocidr(&value[1], &cidr);
                  ^
327. 
328.         if (rc == NGX_ERROR) {

src/core/ngx_inet.c:368:1: Parameter `*text->data`
  366. 
  367. 
  368. ngx_int_t
       ^
  369. ngx_ptocidr(ngx_str_t *text, ngx_cidr_t *cidr)
  370. {

src/core/ngx_inet.c:382:12: Call
  380.     last = addr + text->len;
  381. 
  382.     mask = ngx_strlchr(addr, last, '/');
                  ^
  383.     len = (mask ? mask : last) - addr;
  384. 

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

src/core/ngx_inet.c:411:13: Call
  409.     mask++;
  410. 
  411.     shift = ngx_atoi(mask, last - mask);
                   ^
  412.     if (shift == NGX_ERROR) {
  413.         return NGX_ERROR;

src/core/ngx_string.c:910:5: <LHS trace>
908.     }
909. 
910.     cutoff = NGX_MAX_INT_T_VALUE / 10;
         ^
911.     cutlim = NGX_MAX_INT_T_VALUE % 10;
912. 

src/core/ngx_string.c:910:5: Assignment
    908.     }
    909. 
    910.     cutoff = NGX_MAX_INT_T_VALUE / 10;
             ^
    911.     cutlim = NGX_MAX_INT_T_VALUE % 10;
    912. 

src/core/ngx_string.c:901:1: <RHS trace>
899. 
900. 
901. ngx_int_t
     ^
902. ngx_atoi(u_char *line, size_t n)
903. {

src/core/ngx_string.c:901:1: Parameter `*line`
    899. 
    900. 
    901. ngx_int_t
         ^
    902. ngx_atoi(u_char *line, size_t n)
    903. {

src/core/ngx_string.c:922:9: Binary operation: ([0, 9223372036854775800] + [0, 9]):signed64 by call to `ngx_ptocidr` 
    920.         }
    921. 
    922.         value = value * 10 + (*line - '0');
                 ^
    923.     }
    924. 

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_access_rule(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)\n{\n    ngx_http_access_loc_conf_t *alcf = conf;\n    ngx_int_t                   rc;\n    ngx_uint_t                  all;\n    ngx_str_t                  *value;\n    ngx_cidr_t                  cidr;\n    ngx_http_access_rule_t     *rule;\n#if (NGX_HAVE_INET6)\n    ngx_http_access_rule6_t    *rule6;\n#endif\n#if (NGX_HAVE_UNIX_DOMAIN)\n    ngx_http_access_rule_un_t  *rule_un;\n#endif\n    all = 0;\n    ngx_memzero(&cidr, sizeof(ngx_cidr_t));\n    value = cf->args->elts;\n    if (value[1].len == 3 && ngx_strcmp(value[1].data, "all") == 0) {\n        all = 1;\n#if (NGX_HAVE_UNIX_DOMAIN)\n    } else if (value[1].len == 5 && ngx_strcmp(value[1].data, "unix:") == 0) {\n        cidr.family = AF_UNIX;\n#endif\n    } else {\n        rc = ngx_ptocidr(&value[1], &cidr);\n        if (rc == NGX_ERROR) {\n            ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,\n                         "invalid parameter \\"%V\\"", &value[1]);\n            return NGX_CONF_ERROR;\n        }\n        if (rc == NGX_DONE) {\n            ngx_conf_log_error(NGX_LOG_WARN, cf, 0,\n                         "low address bits of %V are meaningless", &value[1]);\n        }\n    }\n    if (cidr.family == AF_INET || all) {\n        if (alcf->rules == NULL) {\n            alcf->rules = ngx_array_create(cf->pool, 4,\n                                           sizeof(ngx_http_access_rule_t));\n            if (alcf->rules == NULL) {\n                return NGX_CONF_ERROR;\n            }\n        }\n        rule = ngx_array_push(alcf->rules);\n        if (rule == NULL) {\n            return NGX_CONF_ERROR;\n        }\n        rule->mask = cidr.u.in.mask;\n        rule->addr = cidr.u.in.addr;\n        rule->deny = (value[0].data[0] == \'d\') ? 1 : 0;\n    }\n#if (NGX_HAVE_INET6)\n    if (cidr.family == AF_INET6 || all) {\n        if (alcf->rules6 == NULL) {\n            alcf->rules6 = ngx_array_create(cf->pool, 4,\n                                            sizeof(ngx_http_access_rule6_t));\n            if (alcf->rules6 == NULL) {\n                return NGX_CONF_ERROR;\n            }\n        }\n        rule6 = ngx_array_push(alcf->rules6);\n        if (rule6 == NULL) {\n            return NGX_CONF_ERROR;\n        }\n        rule6->mask = cidr.u.in6.mask;\n        rule6->addr = cidr.u.in6.addr;\n        rule6->deny = (value[0].data[0] == \'d\') ? 1 : 0;\n    }\n#endif\n#if (NGX_HAVE_UNIX_DOMAIN)\n    if (cidr.family == AF_UNIX || all) {\n        if (alcf->rules_un == NULL) {\n            alcf->rules_un = ngx_array_create(cf->pool, 1,\n                                            sizeof(ngx_http_access_rule_un_t));\n            if (alcf->rules_un == NULL) {\n                return NGX_CONF_ERROR;\n            }\n        }\n        rule_un = ngx_array_push(alcf->rules_un);\n        if (rule_un == NULL) {\n            return NGX_CONF_ERROR;\n        }\n        rule_un->deny = (value[0].data[0] == \'d\') ? 1 : 0;\n    }\n#endif\n    return NGX_CONF_OK;\n}', "ngx_int_t\nngx_ptocidr(ngx_str_t *text, ngx_cidr_t *cidr)\n{\n    u_char      *addr, *mask, *last;\n    size_t       len;\n    ngx_int_t    shift;\n#if (NGX_HAVE_INET6)\n    ngx_int_t    rc;\n    ngx_uint_t   s, i;\n#endif\n    addr = text->data;\n    last = addr + text->len;\n    mask = ngx_strlchr(addr, last, '/');\n    len = (mask ? mask : last) - addr;\n    cidr->u.in.addr = ngx_inet_addr(addr, len);\n    if (cidr->u.in.addr != INADDR_NONE) {\n        cidr->family = AF_INET;\n        if (mask == NULL) {\n            cidr->u.in.mask = 0xffffffff;\n            return NGX_OK;\n        }\n#if (NGX_HAVE_INET6)\n    } else if (ngx_inet6_addr(addr, len, cidr->u.in6.addr.s6_addr) == NGX_OK) {\n        cidr->family = AF_INET6;\n        if (mask == NULL) {\n            ngx_memset(cidr->u.in6.mask.s6_addr, 0xff, 16);\n            return NGX_OK;\n        }\n#endif\n    } else {\n        return NGX_ERROR;\n    }\n    mask++;\n    shift = ngx_atoi(mask, last - mask);\n    if (shift == NGX_ERROR) {\n        return NGX_ERROR;\n    }\n    switch (cidr->family) {\n#if (NGX_HAVE_INET6)\n    case AF_INET6:\n        if (shift > 128) {\n            return NGX_ERROR;\n        }\n        addr = cidr->u.in6.addr.s6_addr;\n        mask = cidr->u.in6.mask.s6_addr;\n        rc = NGX_OK;\n        for (i = 0; i < 16; i++) {\n            s = (shift > 8) ? 8 : shift;\n            shift -= s;\n            mask[i] = (u_char) (0xffu << (8 - s));\n            if (addr[i] != (addr[i] & mask[i])) {\n                rc = NGX_DONE;\n                addr[i] &= mask[i];\n            }\n        }\n        return rc;\n#endif\n    default:\n        if (shift > 32) {\n            return NGX_ERROR;\n        }\n        if (shift) {\n            cidr->u.in.mask = htonl((uint32_t) (0xffffffffu << (32 - shift)));\n        } else {\n            cidr->u.in.mask = 0;\n        }\n        if (cidr->u.in.addr == (cidr->u.in.addr & cidr->u.in.mask)) {\n            return NGX_OK;\n        }\n        cidr->u.in.addr &= cidr->u.in.mask;\n        return NGX_DONE;\n    }\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}"]