Valgrind reporting issue in connection->addr_text

Robert Paprocki rpaprocki at fearnothingproductions.net
Mon May 6 18:12:11 UTC 2019


Hi,

addr_text is of type 'ngx_str_t':
http://lxr.nginx.org/source/src/core/ngx_connection.h#0148, which provides
both the char pointer and the length. It's not correct to cast that value
to a char pointer directly.

On Mon, May 6, 2019 at 11:09 AM bhagavathula <nginx-forum at forum.nginx.org>
wrote:

> Hi,
>
> When running Valgrind on our NGINX module for errors, found the following
> errors:
> ==49784== Conditional jump or move depends on uninitialised value(s)
> ==49784==    at 0x4C32D08: strlen (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==49784==    by 0x6C3A328: apr_pstrdup (in
> /usr/lib/x86_64-linux-gnu/libapr-1.so.0.6.3)
> ==49784==    by 0x6C3DB3D: apr_table_add (in
> /usr/lib/x86_64-linux-gnu/libapr-1.so.0.6.3)
> ==49784==    by 0x611CC82: get_request_properties
> (ta_ngx_http_module.c:329)
> ==49784==    by 0x611CE30: get_new_token (ta_ngx_http_module.c:351)
> ==49784==    by 0x611CF55: get_token_helper (ta_ngx_http_module.c:374)
> ==49784==    by 0x611D4BC: ta_post_read_request_helper
> (ta_ngx_http_module.c:486)
> ==49784==    by 0x611D750: ta_post_read_request (ta_ngx_http_module.c:920)
> ==49784==    by 0x1553E6: ngx_http_core_access_phase
> (ngx_http_core_module.c:1083)
> ==49784==    by 0x150A34: ngx_http_core_run_phases
> (ngx_http_core_module.c:858)
> ==49784==    by 0x150ADA: ngx_http_handler (ngx_http_core_module.c:841)
> ==49784==    by 0x1594B0: ngx_http_process_request
> (ngx_http_request.c:1952)
> ==49784==  Uninitialised value was created by a heap allocation
> ==49784==    at 0x4C31E76: memalign (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==49784==    by 0x4C31F91: posix_memalign (in
> /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==49784==    by 0x14611F: ngx_memalign (ngx_alloc.c:57)
> ==49784==    by 0x122D09: ngx_create_pool (ngx_palloc.c:23)
> ==49784==    by 0x142CD6: ngx_event_accept (ngx_event_accept.c:161)
> ==49784==    by 0x14D313: ngx_epoll_process_events (ngx_epoll_module.c:902)
> ==49784==    by 0x14218D: ngx_process_events_and_timers (ngx_event.c:242)
> ==49784==    by 0x14C2A3: ngx_single_process_cycle
> (ngx_process_cycle.c:310)
> ==49784==    by 0x1214E4: main (nginx.c:379)
>
> The code that is causing the error is as follows:
> const char *ip  =(char *) (r->connection->addr_text).data;
> apr_table_add(request_table, (char *) TA_PROP_CLIENT_ADDR, ip);
>
> When printing the ip which is supposed to be "127.0.0.1" (localhost), but
> at
> times some garbage value is appended like:
> 127.0.0.1 at 1\u000b0\t\u0006\u0003xW�\u0005
>
> I am not able to understand why addr_text contains garbage value, Can
> someone pls help me.
>
> Posted at Nginx Forum:
> https://forum.nginx.org/read.php?2,284065,284065#msg-284065
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20190506/12bea9fe/attachment-0001.html>


More information about the nginx mailing list