Properly clear the last entered character
authorTobias Stoeckmann <tobias@stoeckmann.org>
Sat, 25 Mar 2017 20:16:01 +0000 (21:16 +0100)
committerMarkus Teich <teichm@fs.tum.de>
Sat, 25 Mar 2017 20:51:29 +0000 (21:51 +0100)
When enter is pressed, passwd[len] will be set to '\0'. Pressing
backspace is supposed to remove the last entered character.

But currently, the clearing has an off-by-one, as in setting
passwd[len] to '\0' just like enter would do.

You can also verify it by imagining len=1 and that it's impossible to
clear passwd[0] by pressing backspace with the current code.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
slock.c

diff --git a/slock.c b/slock.c
index d55eb3d..5ae738c 100644 (file)
--- a/slock.c
+++ b/slock.c
@@ -177,7 +177,7 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
                                break;
                        case XK_BackSpace:
                                if (len)
-                                       passwd[len--] = '\0';
+                                       passwd[--len] = '\0';
                                break;
                        default:
                                if (num && !iscntrl((int)buf[0]) &&