[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedesktop-xorg-devel
Subject:    [PATCH xrandr v2 2/2] xrandr: stricter --scale argument parsing
From:       Giuseppe Bilotta <giuseppe.bilotta () gmail ! com>
Date:       2017-06-22 22:39:11
Message-ID: 20170622223911.9698-3-giuseppe.bilotta () gmail ! com
[Download RAW message or body]

We used to accept something like --scale 2x3junk as a valid input
(scaling x by 2 and y by 3), even though this isn't really a valid
scaling factor.

Fix by making sure there is nothing after the parsed number(s).

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
 xrandr.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/xrandr.c b/xrandr.c
index 4433724..5056e8b 100644
--- a/xrandr.c
+++ b/xrandr.c
@@ -3014,11 +3014,12 @@ main (int argc, char **argv)
 	if (!strcmp ("--scale", argv[i]))
 	{
 	    double  sx, sy;
+	    char junk;
 	    if (!config_output) argerr ("%s must be used after --output\n", argv[i]);
 	    if (++i >= argc) argerr ("%s requires an argument\n", argv[i-1]);
-	    if (sscanf (argv[i], "%lfx%lf", &sx, &sy) != 2)
+	    if (sscanf (argv[i], "%lfx%lf%c", &sx, &sy, &junk) != 2)
 	    {
-		    if (sscanf (argv[i], "%lf", &sx) != 1)
+		    if (sscanf (argv[i], "%lf%c", &sx, &junk) != 1)
 			    argerr ("failed to parse '%s' as a scaling factor\n", argv[i]);
 		    sy = sx;
 	    }
-- 
2.13.0.rc0.207.gb442654931

_______________________________________________
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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic