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]; > @@ -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
signature.asc
Description: PGP signature
_______________________________________________ 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