Цитируется из ngx_hash.c :
ngx_strlow(elt->name, names[n].key.data, names[n].key.len);
Который копирует строчную строку в elt->name
.
Здесь elt
имеет тип ngx_hash_elt_t *
:
typedef struct {
void *value;
u_short len;
u_char name[1];
} ngx_hash_elt_t;
Как видите, name
имеет ширину всего 1
, IMO ngx_strlow
вызовет переполнение буфера, но на самом деле это работает без проблем, кто-нибудь может объяснить это?