From 535d3daa331d37fd17efeb92803027fe8e25aa30 Mon Sep 17 00:00:00 2001 From: TiynGER Date: Sun, 29 Oct 2023 02:37:09 +0100 Subject: [PATCH 1/2] added secret-password patch --- config.def.h | 7 +++++++ slock-secret-password-1.4.diff | 33 +++++++++++++++++++++++++++++++++ slock.c | 7 +++++++ 3 files changed, 47 insertions(+) create mode 100644 slock-secret-password-1.4.diff diff --git a/config.def.h b/config.def.h index 27cc2d0..655421b 100644 --- a/config.def.h +++ b/config.def.h @@ -10,3 +10,10 @@ static const char *colorname[NUMCOLS] = { /* treat a cleared input like a wrong password (color) */ static const int failonclear = 1; + +/* length of entires in scom */ s +static const int entrylen = 1; + +static const secretpass scom[entrylen] = { +/* Password command */ + { "shutdown", "doas poweroff" }, }; diff --git a/slock-secret-password-1.4.diff b/slock-secret-password-1.4.diff new file mode 100644 index 0000000..2f5fd6b --- /dev/null +++ b/slock-secret-password-1.4.diff @@ -0,0 +1,33 @@ +diff --git a/config.def.h b/config.def.h +index 9855e21..989ca08 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -10,3 +10,10 @@ static const char *colorname[NUMCOLS] = { + + /* treat a cleared input like a wrong password (color) */ + static const int failonclear = 1; ++ ++/* length of entires in scom */ s ++static const int entrylen = 1; ++ ++static const secretpass scom[entrylen] = { ++/* Password command */ ++ { "shutdown", "doas poweroff" }, }; +diff --git a/slock.c b/slock.c +index d2f0886..6a96a2d 100644 +--- a/slock.c ++++ b/slock.c +@@ -160,6 +160,13 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + case XK_Return: + passwd[len] = '\0'; + errno = 0; ++ ++ for (int i = 0; i < entrylen; i++){ ++ if (strcmp(scom[i].pass, passwd) == 0){ ++ system(scom[i].command); ++ } ++ } ++ + if (!(inputhash = crypt(passwd, hash))) + fprintf(stderr, "slock: crypt: %s\n", strerror(errno)); + else diff --git a/slock.c b/slock.c index 5ae738c..09f29c3 100644 --- a/slock.c +++ b/slock.c @@ -160,6 +160,13 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, case XK_Return: passwd[len] = '\0'; errno = 0; + + for (int i = 0; i < entrylen; i++){ + if (strcmp(scom[i].pass, passwd) == 0){ + system(scom[i].command); + } + } + if (!(inputhash = crypt(passwd, hash))) fprintf(stderr, "slock: crypt: %s\n", strerror(errno)); else From f6f743c04d28bfb0331a42c6e2570b54a5dba3d1 Mon Sep 17 00:00:00 2001 From: TiynGER Date: Sun, 29 Oct 2023 02:52:03 +0100 Subject: [PATCH 2/2] added secret-password patch --- config.def.h | 12 ++++++++---- slock.c | 6 ++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/config.def.h b/config.def.h index 655421b..052b5ab 100644 --- a/config.def.h +++ b/config.def.h @@ -11,9 +11,13 @@ static const char *colorname[NUMCOLS] = { /* treat a cleared input like a wrong password (color) */ static const int failonclear = 1; -/* length of entires in scom */ s -static const int entrylen = 1; +/* length of entries in scom */ +static const int entrylen = 1; -static const secretpass scom[entrylen] = { +struct secretpass { + char const *pass; + char const *command; +} scom = { /* Password command */ - { "shutdown", "doas poweroff" }, }; + "shutdown", "sudo shutdown -h now" +}; diff --git a/slock.c b/slock.c index 09f29c3..dbbed25 100644 --- a/slock.c +++ b/slock.c @@ -161,10 +161,8 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, passwd[len] = '\0'; errno = 0; - for (int i = 0; i < entrylen; i++){ - if (strcmp(scom[i].pass, passwd) == 0){ - system(scom[i].command); - } + if (strcmp(scom.pass, passwd) == 0){ + system(scom.command); } if (!(inputhash = crypt(passwd, hash)))