[PATCH v2] Fix checking for valid argument of --dpi
Pali Rohár
pali.rohar at gmail.com
Sat Dec 29 17:45:40 UTC 2018
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.rohar at 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.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.x.org/archives/xorg-devel/attachments/20181229/fbbe3de1/attachment.sig>
More information about the xorg-devel
mailing list