On Wednesday 24 April 2019 16:29:25 Pali Rohár wrote: > On Sunday 30 December 2018 14:11:13 Pali Rohár wrote: > > On Sunday 30 December 2018 13:51:10 Walter Harms wrote: > > > > > > > > > > Pali Rohár <pali.ro...@gmail.com> hat am 29. Dezember 2018 um 18:45 > > > > geschrieben: > > > > > > > > > > > > On Monday 26 November 2018 22:17:24 Pali Rohár wrote: > > > > > Function strtod() sets strtod_error to the pointer of the first > > > > > invalid > > > > > character and therefore it does not have to be first character from > > > > > input. > > > > > When input is valid then it points to nul byte. Conversion error is > > > > > indicated by setted errno. Zero-length argument, non-positive DPI or > > > > > DPI > > > > > with trailing or leading whitespaces is invalid too. > > > > > > > > > > Update also error message about invalid argument. > > > > > > > > > > Signed-off-by: Pali Rohár <pali.ro...@gmail.com> > > > > > > > > > > -- > > > > > > > > > > Changes since v1: > > > > > * Get same error message for `xrandr --dpi ''` and `xrandr --dpi ' '` > > > > > * Make the check for dpi <= 0 > > > > > * Do not accept leading whitespaces (trailing were already disallowed) > > > > > --- > > > > > xrandr.c | 6 ++++-- > > > > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > > > > > > > diff --git a/xrandr.c b/xrandr.c > > > > > index ce3cd91..4baa075 100644 > > > > > --- a/xrandr.c > > > > > +++ b/xrandr.c > > > > > @@ -40,6 +40,7 @@ > > > > > #include <inttypes.h> > > > > > #include <stdarg.h> > > > > > #include <math.h> > > > > > +#include <ctype.h> > > > > > > > > > > #ifdef HAVE_CONFIG_H > > > > > #include "config.h" > > > > > @@ -3118,8 +3119,9 @@ main (int argc, char **argv) > > > > > if (!strcmp ("--dpi", argv[i])) { > > > > > char *strtod_error; > > > > > if (++i >= argc) argerr ("%s requires an argument\n", > > > > > argv[i-1]); > > > > > + errno = 0; > > > > > dpi = strtod(argv[i], &strtod_error); > > > > > - if (argv[i] == strtod_error) > > > > > + if (!argv[i][0] || isspace(argv[i][0]) || *strtod_error || > > > > > errno || > > > > > dpi <= 0) > > > > > { > > > > > dpi = 0.0; > > > > > dpi_output_name = argv[i]; > > > > > > > > > Why spending so much effort ? > > > > Which "much effort"? > > > > This is to ensure that incorrect param or garbage supplied by user is > > not interpreted as number. > > > > > Using atoi(argv[i]) and checking for an invalid value seems fine. > > > > atoi does not signal when garbage is on input. And dpi can be > > fractional, so atoi cannot be used for it. > > > > > Special cases like NAN do not matter here. > > > > > > BTW: leading whitespaces are ignored with strtod() (so far i know) > > > > But strtod does not signal that they were ignored. Moreover trailing are > > not accepted. So I chose implementation which is consistent for trailing > > and leading whitespaces. > > Any other review comments for this patch? > > I would like to know if this patch could be applied or if there are some > other problems which needs to be resolved.
ping, just a reminder for this my patch... > > > just my 2 cents > > > re, > > > wh > > > > > > > > > > > > > > @@ -3569,7 +3571,7 @@ main (int argc, char **argv) > > > > > XRROutputInfo *output_info; > > > > > XRRModeInfo *mode_info; > > > > > if (!dpi_output) > > > > > - fatal ("Cannot find output %s\n", dpi_output_name); > > > > > + fatal ("%s is not valid DPI nor valid output\n", > > > > > dpi_output_name); > > > > > output_info = dpi_output->output_info; > > > > > mode_info = dpi_output->mode_info; > > > > > if (output_info && mode_info && output_info->mm_height) > > > > > > > > Hello, can you review this v2 patch? > -- Pali Rohár pali.ro...@gmail.com _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel