Hello, can you review my patch below?

On Thursday 12 April 2018 20:52:21 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 and zero DPI is invalid
> too.
> 
> Update also error message about invalid argument.
> 
> Signed-off-by: Pali Rohár <pali.ro...@gmail.com>
> ---
>  xrandr.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/xrandr.c b/xrandr.c
> index 7f1e867..1960bbf 100644
> --- a/xrandr.c
> +++ b/xrandr.c
> @@ -3115,9 +3115,10 @@ 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]);
> +         if (++i >= argc || !argv[i][0]) argerr ("%s requires an 
> argument\n", argv[i-1]);
> +         errno = 0;
>           dpi = strtod(argv[i], &strtod_error);
> -         if (argv[i] == strtod_error)
> +         if (*strtod_error || errno || dpi == 0)
>           {
>               dpi = 0.0;
>               dpi_output_name = argv[i];
> @@ -3567,7 +3568,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)

-- 
Pali Rohár
pali.ro...@gmail.com

Attachment: 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

Reply via email to