diff options
-rw-r--r-- | user/kscreenlocker/APKBUILD | 51 | ||||
-rw-r--r-- | user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch | 71 |
2 files changed, 122 insertions, 0 deletions
diff --git a/user/kscreenlocker/APKBUILD b/user/kscreenlocker/APKBUILD new file mode 100644 index 000000000..432bcbae6 --- /dev/null +++ b/user/kscreenlocker/APKBUILD @@ -0,0 +1,51 @@ +# Contributor: A. Wilcox <awilfox@adelielinux.org> +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=kscreenlocker +pkgver=5.8.7 +pkgrel=0 +pkgdesc="Secure X11 screen locker" +url="https://www.kde.org/" +arch="all" +license="LGPL-2.1" +options="!check" # requires loginctl +depends="" +depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kcrash-dev kdeclarative-dev + kglobalaccel-dev ki18n-dev kidletime-dev kcmutils-dev solid-dev + knotifications-dev ktextwidgets-dev kwindowsystem-dev kxmlgui-dev + kwayland-dev libxi-dev libxcursor-dev" +makedepends="$depends_dev cmake extra-cmake-modules python3 gettext-dev + libx11-dev libxext-dev libxcb-dev linux-pam-dev" +install="" +subpackages="$pkgname-dev $pkgname-lang" +source="http://download.kde.org/stable/plasma/$pkgver/kscreenlocker-$pkgver.tar.xz + kscreenlocker-5.8.5-stop-using-getpass.patch" +builddir="$srcdir/kscreenlocker-$pkgver" + +build() { + cd "$builddir" + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + cmake \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + ${CMAKE_CROSSOPTS} + make +} + +check() { + cd "$builddir" + CTEST_OUTPUT_ON_FAILURE=TRUE ctest +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install +} + +sha512sums="cee66e85efaafd5629c9e2b1eea1522cff960d7b9922be7b6d5f767c231fcb762cf80585d5528fdb5fc3684881bf2fa4a59da3136a1d23341ceb218da3f69e11 kscreenlocker-5.8.7.tar.xz +44bbf365555668f7ef2f354a06d08b4b83c556f6e78ead028acd727363c287cfecc2e3eb4d0bb137feb2939da0fa21db694af6b10f8a3878d7071ad4e3b8d4e8 kscreenlocker-5.8.5-stop-using-getpass.patch" diff --git a/user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch b/user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch new file mode 100644 index 000000000..f10789f88 --- /dev/null +++ b/user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch @@ -0,0 +1,71 @@ +--- kscreenlocker-5.8.5/kcheckpass/kcheckpass.c.old 2016-12-27 11:25:36.000000000 +0000 ++++ kscreenlocker-5.8.5/kcheckpass/kcheckpass.c 2017-01-31 04:32:44.858227055 +0000 +@@ -56,6 +56,7 @@ + #include <stdlib.h> + #include <errno.h> + #include <time.h> ++#include <termios.h> + + #include <config-kscreenlocker.h> + #if HAVE_SYS_PRCTL_H +@@ -75,9 +76,41 @@ + static int havetty, sfd = -1, nullpass; + + static char * ++better_getpass (void) ++{ ++ char *password = NULL, *nl; ++ size_t buf_len = 0; ++ ssize_t pass_len; ++ struct termios ti; ++ ++ tcgetattr(STDIN_FILENO, &ti); ++ ti.c_lflag &= ~ECHO; ++ tcsetattr(STDIN_FILENO, TCSANOW, &ti); ++ ++ pass_len = getdelim(&password, &buf_len, '\n', stdin); ++ ++ if (pass_len < 0) { ++ free(password); ++ return NULL; ++ } ++ ++ ti.c_lflag |= ECHO; ++ tcsetattr(STDIN_FILENO, TCSANOW, &ti); ++ ++ /* Do not include the \n at the end */ ++ nl = strchr(password, '\n'); ++ if (nl) { ++ *nl = '\0'; ++ } ++ ++ return password; ++} ++ ++ ++static char * + conv_legacy (ConvRequest what, const char *prompt) + { +- char *p, *p2; ++ char *p2; + int len; + char buf[1024]; + +@@ -99,13 +132,10 @@ + return strdup(buf); + case ConvGetHidden: + if (havetty) { +-#ifdef HAVE_GETPASSPHRASE +- p = getpassphrase(prompt ? prompt : "Password: "); +-#else +- p = getpass(prompt ? prompt : "Password: "); +-#endif +- p2 = strdup(p); +- memset(p, 0, strlen(p)); ++ fputs(prompt ? prompt : "Password: ", stdout); ++ fflush(stdout); ++ p2 = better_getpass(); ++ printf("\n"); + return p2; + } else { + if (prompt) |