<div dir="ltr"><div dir="ltr">Hi,<div><br></div><div>addr_text is of type 'ngx_str_t': <a href="http://lxr.nginx.org/source/src/core/ngx_connection.h#0148">http://lxr.nginx.org/source/src/core/ngx_connection.h#0148</a>, which provides both the char pointer and the length. It's not correct to cast that value to a char pointer directly.</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 6, 2019 at 11:09 AM bhagavathula <<a href="mailto:nginx-forum@forum.nginx.org">nginx-forum@forum.nginx.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
When running Valgrind on our NGINX module for errors, found the following<br>
errors:<br>
==49784== Conditional jump or move depends on uninitialised value(s)<br>
==49784==    at 0x4C32D08: strlen (in<br>
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)<br>
==49784==    by 0x6C3A328: apr_pstrdup (in<br>
/usr/lib/x86_64-linux-gnu/libapr-1.so.0.6.3)<br>
==49784==    by 0x6C3DB3D: apr_table_add (in<br>
/usr/lib/x86_64-linux-gnu/libapr-1.so.0.6.3)<br>
==49784==    by 0x611CC82: get_request_properties<br>
(ta_ngx_http_module.c:329)<br>
==49784==    by 0x611CE30: get_new_token (ta_ngx_http_module.c:351)<br>
==49784==    by 0x611CF55: get_token_helper (ta_ngx_http_module.c:374)<br>
==49784==    by 0x611D4BC: ta_post_read_request_helper<br>
(ta_ngx_http_module.c:486)<br>
==49784==    by 0x611D750: ta_post_read_request (ta_ngx_http_module.c:920)<br>
==49784==    by 0x1553E6: ngx_http_core_access_phase<br>
(ngx_http_core_module.c:1083)<br>
==49784==    by 0x150A34: ngx_http_core_run_phases<br>
(ngx_http_core_module.c:858)<br>
==49784==    by 0x150ADA: ngx_http_handler (ngx_http_core_module.c:841)<br>
==49784==    by 0x1594B0: ngx_http_process_request<br>
(ngx_http_request.c:1952)<br>
==49784==  Uninitialised value was created by a heap allocation<br>
==49784==    at 0x4C31E76: memalign (in<br>
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)<br>
==49784==    by 0x4C31F91: posix_memalign (in<br>
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)<br>
==49784==    by 0x14611F: ngx_memalign (ngx_alloc.c:57)<br>
==49784==    by 0x122D09: ngx_create_pool (ngx_palloc.c:23)<br>
==49784==    by 0x142CD6: ngx_event_accept (ngx_event_accept.c:161)<br>
==49784==    by 0x14D313: ngx_epoll_process_events (ngx_epoll_module.c:902)<br>
==49784==    by 0x14218D: ngx_process_events_and_timers (ngx_event.c:242)<br>
==49784==    by 0x14C2A3: ngx_single_process_cycle<br>
(ngx_process_cycle.c:310)<br>
==49784==    by 0x1214E4: main (nginx.c:379)<br>
<br>
The code that is causing the error is as follows:<br>
const char *ip  =(char *) (r->connection->addr_text).data;<br>
apr_table_add(request_table, (char *) TA_PROP_CLIENT_ADDR, ip);<br>
<br>
When printing the ip which is supposed to be "127.0.0.1" (localhost), but at<br>
times some garbage value is appended like:<br>
127.0.0.1@1\u000b0\t\u0006\u0003xW�\u0005<br>
<br>
I am not able to understand why addr_text contains garbage value, Can<br>
someone pls help me.<br>
<br>
Posted at Nginx Forum: <a href="https://forum.nginx.org/read.php?2,284065,284065#msg-284065" rel="noreferrer" target="_blank">https://forum.nginx.org/read.php?2,284065,284065#msg-284065</a><br>
<br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a></blockquote></div>