Opened 8 years ago
Closed 8 years ago
#1494 closed defect (fixed)
Null character in error.log
| Reported by: | Owned by: | ||
|---|---|---|---|
| Priority: | minor | Milestone: | |
| Component: | nginx-module | Version: | 1.13.x |
| Keywords: | Cc: | fffilimonov@… | |
| uname -a: | Darwin 17.3.0 Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64 x86_64 | ||
| nginx -V: |
nginx version: nginx/1.13.10
built by clang 9.0.0 (clang-900.0.38) configure arguments: |
||
Description
With config like this:
auth_basic "Restricted";
auth_basic_user_file $host/htpasswd;
If user not found in file nginx writes to error log string:
2018/02/26 15:19:33 [error] 85925#0: *3 user "addd" was not found in "/Users/vf/nginx/127.0.0.1/htpasswd^@", client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:8080"
The issue only with variable in auth_basic_user_file path.
With config like this no null char:
auth_basic "Restricted";
auth_basic_user_file /root/htpasswd;
ngx_http_auth_basic_module.c
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
"user \"%V\" was not found in \"%V\"",
&r->headers_in.user, &user_file);
user_file - ngx_str_t
So, it means there is a string inside user_file.data with null terminator.
In debug log i can see:
2018/02/26 16:23:46 [debug] 93741#0: *1 access phase: 6 2018/02/26 16:23:46 [debug] 93741#0: *1 access phase: 7 2018/02/26 16:23:46 [debug] 93741#0: *1 http script var: "127.0.0.1" 2018/02/26 16:23:46 [debug] 93741#0: *1 http script copy: "/htpasswd^@" 2018/02/26 16:23:46 [debug] 93741#0: *1 http script fullname: "/Users/vf/nginx/127.0.0.1/htpasswd^@" 2018/02/26 16:23:46 [debug] 93741#0: *1 read: 9, 00007FFEE2FA7E00, 2048, 0 2018/02/26 16:23:46 [error] 93741#0: *1 user "addd" was not found in "/Users/vf/nginx/127.0.0.1/htpasswd^@", client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:8080"
The null char we got from ngx_http_script.c.
The simple fix is:
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
"user \"%V\" was not found in \"%s\"",
&r->headers_in.user, user_file.data);
But possible the problem is somewhere in other function which builds the path.
Change History (2)
comment:1 by , 8 years ago
comment:2 by , 8 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.

In 7218:e48ac0136ee3/nginx: