Should ngx_atoi and ngx_atof functions change their signature?!

Wandenberg Peixoto wandenberg at gmail.com
Thu Dec 10 17:15:04 UTC 2015


Ops.

Sorry, I didn't realize that it only deals with positive numbers.
The return type as ngx_int_t tricked me, and I didn't checked the use case
as "-2".

Sorry again.

On Thu, Dec 10, 2015 at 3:01 PM, Valentin V. Bartenev <vbart at nginx.com>
wrote:

> On Thursday 10 December 2015 14:55:32 Wandenberg Peixoto wrote:
> > Hi,
> >
> > today I realized a possible problem on the ngx_atoi and ngx_atof
> functions
> > (may be on all ngx_ato* functions).
> >
> > There is no way to distinguish between an error and a valid "-1" string.
> >
> > For instance,
> >
> > ngx_str_t some_string = ngx_string("-1");
> > ngx_int_t x = ngx_atoi(some_string.data, some_string.len);
> >
> > if (x == NGX_ERROR) {
> >   ngx_log_debug(NGX_LOG_DEBUG, ngx_cycle->log, 0, "ERROR");
> > } else {
> >   ngx_log_debug(NGX_LOG_DEBUG, ngx_cycle->log, 0, "SUCCESS %d", x);
> > }
> >
> > this code will produce an "ERROR" as output instead of "SUCCESS -1".
> > The same result as if the some_string had a value like "xyz".
> >
> > I know that this is unlikely to happen that you have a string with "-1",
> > but it is possible.
> >
> > What do you think about change these function signature, or add a new
> one,
> > to receive the output as a parameter something like
> >
> > ngx_int_t
> > ngx_atoi(u_char *line, size_t n, ngx_int_t *result)
> >
> > using the "result" parameter to store the parsed value and return NGX_OK
> or
> > NGX_ERROR.
> >
>
> What makes you think that these functions are able to parse negative
> numbers?
>
>   wbr, Valentin V. Bartenev
>
> _______________________________________________
> nginx-devel mailing list
> nginx-devel at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20151210/408252dd/attachment.html>


More information about the nginx-devel mailing list