]> git.kaiwu.me - nginx.git/commitdiff
Uwsgi: support for multibyte parameter name lengths.
authorVadim Zhestikov <v.zhestikov@f5.com>
Wed, 19 Aug 2026 19:41:08 +0000 (12:41 -0700)
committerVadimZhestikov <108960056+VadimZhestikov@users.noreply.github.com>
Thu, 20 Aug 2026 02:24:25 +0000 (19:24 -0700)
The name length of a configured parameter was truncated to one byte
before the per-parameter length field was written, so that a
uwsgi_param name of 256 bytes or longer was encoded with a wrong
length while the name itself was copied in full.  The resulting request
was malformed, and upstream servers responded by closing the connection.

While long names are barely used in practice, it is easy to support
them.  The length is now properly encoded up to the allowed length.

src/http/modules/ngx_http_uwsgi_module.c

index 8d243bc907d15638d35ea239ce53541146814d35..6193c941e21af5049ffb8dd2167e8bb811caaa86 100644 (file)
@@ -1075,7 +1075,7 @@ ngx_http_uwsgi_create_request(ngx_http_request_t *r)
         while (*(uintptr_t *) le.ip) {
 
             lcode = *(ngx_http_script_len_code_pt *) le.ip;
-            key_len = (u_char) lcode(&le);
+            key_len = lcode(&le);
 
             lcode = *(ngx_http_script_len_code_pt *) le.ip;
             skip_empty = lcode(&le);