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

src/http/modules/ngx_http_memcached_module.c:347:13: Unknown value from: strncmp
345.         p += sizeof("VALUE ") - 1;
346. 
347.         if (ngx_strncmp(p, ctx->key.data, ctx->key.len) != 0) {
                 ^
348.             ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
349.                           "memcached sent invalid key in response \"%V\" "

src/http/modules/ngx_http_memcached_module.c:380:17: Call
378.     flags:
379. 
380.         flags = ngx_atoi(start, p - start - 1);
                     ^
381. 
382.         if (flags == (ngx_uint_t) 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_atoi` 
  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 ngx_int_t\nngx_http_memcached_process_header(ngx_http_request_t *r)\n{\n    u_char                         *p, *start;\n    ngx_str_t                       line;\n    ngx_uint_t                      flags;\n    ngx_table_elt_t                *h;\n    ngx_http_upstream_t            *u;\n    ngx_http_memcached_ctx_t       *ctx;\n    ngx_http_memcached_loc_conf_t  *mlcf;\n    u = r->upstream;\n    for (p = u->buffer.pos; p < u->buffer.last; p++) {\n        if (*p == LF) {\n            goto found;\n        }\n    }\n    return NGX_AGAIN;\nfound:\n    line.data = u->buffer.pos;\n    line.len = p - u->buffer.pos;\n    if (line.len == 0 || *(p - 1) != CR) {\n        goto no_valid;\n    }\n    *p = \'\\0\';\n    line.len--;\n    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,\n                   "memcached: \\"%V\\"", &line);\n    p = u->buffer.pos;\n    ctx = ngx_http_get_module_ctx(r, ngx_http_memcached_module);\n    mlcf = ngx_http_get_module_loc_conf(r, ngx_http_memcached_module);\n    if (ngx_strncmp(p, "VALUE ", sizeof("VALUE ") - 1) == 0) {\n        p += sizeof("VALUE ") - 1;\n        if (ngx_strncmp(p, ctx->key.data, ctx->key.len) != 0) {\n            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,\n                          "memcached sent invalid key in response \\"%V\\" "\n                          "for key \\"%V\\"",\n                          &line, &ctx->key);\n            return NGX_HTTP_UPSTREAM_INVALID_HEADER;\n        }\n        p += ctx->key.len;\n        if (*p++ != \' \') {\n            goto no_valid;\n        }\n        start = p;\n        while (*p) {\n            if (*p++ == \' \') {\n                if (mlcf->gzip_flag) {\n                    goto flags;\n                } else {\n                    goto length;\n                }\n            }\n        }\n        goto no_valid;\n    flags:\n        flags = ngx_atoi(start, p - start - 1);\n        if (flags == (ngx_uint_t) NGX_ERROR) {\n            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,\n                          "memcached sent invalid flags in response \\"%V\\" "\n                          "for key \\"%V\\"",\n                          &line, &ctx->key);\n            return NGX_HTTP_UPSTREAM_INVALID_HEADER;\n        }\n        if (flags & mlcf->gzip_flag) {\n            h = ngx_list_push(&r->headers_out.headers);\n            if (h == NULL) {\n                return NGX_ERROR;\n            }\n            h->hash = 1;\n            ngx_str_set(&h->key, "Content-Encoding");\n            ngx_str_set(&h->value, "gzip");\n            r->headers_out.content_encoding = h;\n        }\n    length:\n        start = p;\n        p = line.data + line.len;\n        u->headers_in.content_length_n = ngx_atoof(start, p - start);\n        if (u->headers_in.content_length_n == NGX_ERROR) {\n            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,\n                          "memcached sent invalid length in response \\"%V\\" "\n                          "for key \\"%V\\"",\n                          &line, &ctx->key);\n            return NGX_HTTP_UPSTREAM_INVALID_HEADER;\n        }\n        u->headers_in.status_n = 200;\n        u->state->status = 200;\n        u->buffer.pos = p + sizeof(CRLF) - 1;\n        return NGX_OK;\n    }\n    if (ngx_strcmp(p, "END\\x0d") == 0) {\n        ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,\n                      "key: \\"%V\\" was not found by memcached", &ctx->key);\n        u->headers_in.content_length_n = 0;\n        u->headers_in.status_n = 404;\n        u->state->status = 404;\n        u->buffer.pos = p + sizeof("END" CRLF) - 1;\n        u->keepalive = 1;\n        return NGX_OK;\n    }\nno_valid:\n    ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,\n                  "memcached sent invalid response: \\"%V\\"", &line);\n    return NGX_HTTP_UPSTREAM_INVALID_HEADER;\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}"]