Hi!<div>     When buf > last - 50£¬ buf (= last - 50) is an invalid memory address. And the follow lines write on this invalid memoy.  AIthough, bufs for log in nginx are all bigger than 50, the function does not depend on this. At least , I think this funciton is not robust¡£</div>
<div> </div><div><br><div class="gmail_quote">2012/10/4 Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello!<br>
<div><div class="h5"><br>
On Thu, Oct 04, 2012 at 06:42:42PM +0800, Wang Tiefeng wrote:<br>
<br>
> Recently£¬I start to read nginx source code.<br>
> I chose nginx/1.3.6 a relatively new version¡£<br>
><br>
> When I read file ngx_log.c, the function ngx_log_errno() confused me .<br>
><br>
> There may be some bugs in the following codes :<br>
>  238     if (buf > last - 50) {<br>
> 239<br>
> 240         /* leave a space for an error code */<br>
> 241<br>
> 242         buf = last - 50;<br>
> 243         *buf++ = '.';<br>
> 244         *buf++ = '.';<br>
> 245         *buf++ = '.';<br>
> 246     }<br>
><br>
> Althoug£¬I am not sure about my judgment£¬valgrind reports invalid write on<br>
> line 243.<br>
<br>
</div></div>See no problem here.  The code depends on the fact that the buffer<br>
used for printing errors is at least 50 bytes long, and the "last"<br>
pointer marks it's end, but it looks perfectly safe as long as<br>
ngx_log_errno() is used correctly.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.com/support.html" target="_blank">http://nginx.com/support.html</a><br>
<br>
_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a></font></span></blockquote></div><br></div>