<div dir="ltr">Yes, I just mean the incorrect format string of fmt, it can be dangerous.</div><br><div class="gmail_quote"><div dir="ltr">Valentin V. Bartenev <<a href="mailto:vbart@nginx.com">vbart@nginx.com</a>> 于2018年11月10日周六 下午8:29写道:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Saturday, 10 November 2018 15:16:35 MSK wy7980 wrote:<br>
> # HG changeset patch<br>
> # User wy7980 <<a href="mailto:wy7980@gmail.com" target="_blank">wy7980@gmail.com</a>><br>
> # Date 1541824641 -28800<br>
> #      Sat Nov 10 12:37:21 2018 +0800<br>
> # Node ID e93ac0fd29c1f49e7dd49ff5e1efd58c009d359a<br>
> # Parent  a2506436986ae9cf941fd9477aa77e28f501e11d<br>
> <br>
> fix bug of fmt overflow<br>
> <br>
> diff -r a2506436986a -r e93ac0fd29c1 src/core/ngx_string.c<br>
> --- a/src/core/ngx_string.c Tue Nov 06 16:32:09 2018 +0300<br>
> +++ b/src/core/ngx_string.c Sat Nov 10 12:37:21 2018 +0800<br>
> @@ -172,8 +172,9 @@<br>
>      ngx_uint_t             width, sign, hex, max_width, frac_width, scale,<br>
> n;<br>
>      ngx_str_t             *v;<br>
>      ngx_variable_value_t  *vv;<br>
> -<br>
> -    while (*fmt && buf < last) {<br>
> +    char *fmt_last = (char *)fmt + strlen(fmt);<br>
> +<br>
> +    while (*fmt && buf < last && fmt < fmt_last) {<br>
> <br>
>          /*<br>
>           * "buf < last" means that we could copy at least one character:<br>
> <br>
<br>
<br>
Could you clarify what bug you are trying to fix?<br>
There should be no overflows unless you specified an incorrect format string.<br>
<br>
  wbr, Valentin V. Bartenev<br>
<br>
<br>
<br>
_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org" target="_blank">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a><br>
</blockquote></div>