diff options
Diffstat (limited to 'user/kscreenlocker')
-rw-r--r-- | user/kscreenlocker/APKBUILD | 57 | ||||
-rw-r--r-- | user/kscreenlocker/kde-np.pam | 10 | ||||
-rw-r--r-- | user/kscreenlocker/kde.pam | 11 | ||||
-rw-r--r-- | user/kscreenlocker/kscreenlocker-5.8.5-stop-using-getpass.patch | 71 |
4 files changed, 149 insertions, 0 deletions
diff --git a/user/kscreenlocker/APKBUILD b/user/kscreenlocker/APKBUILD new file mode 100644 index 000000000..aaf99ec9b --- /dev/null +++ b/user/kscreenlocker/APKBUILD @@ -0,0 +1,57 @@ +# Contributor: A. Wilcox <awilfox@adelielinux.org> +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=kscreenlocker +pkgver=5.8.7 +pkgrel=1 +pkgdesc="Secure X11 screen locker" +url="https://www.kde.org/" +arch="all" +license="LGPL-2.1" +options="!check" # requires loginctl +depends="linux-pam" +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 + kde.pam + kde-np.pam" +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 + install -D -m644 "$srcdir"/kde.pam "$pkgdir"/etc/pam.d/kde.pam + install -m644 "$srcdir"/kde-np.pam "$pkgdir"/etc/pam.d/kde-np.pam +} + +sha512sums="cee66e85efaafd5629c9e2b1eea1522cff960d7b9922be7b6d5f767c231fcb762cf80585d5528fdb5fc3684881bf2fa4a59da3136a1d23341ceb218da3f69e11 kscreenlocker-5.8.7.tar.xz +44bbf365555668f7ef2f354a06d08b4b83c556f6e78ead028acd727363c287cfecc2e3eb4d0bb137feb2939da0fa21db694af6b10f8a3878d7071ad4e3b8d4e8 kscreenlocker-5.8.5-stop-using-getpass.patch +56e87d02d75c4a8cc4ed183faed416fb4972e7f223b8759959c0f5da32e11e657907a1df279d62a44a6a174f5aca8b2ac66a5f3325c5deb92011bcf71eed74c3 kde.pam +565265485dd7466b77966d75a56766216b8bcc187c95a997e531e9481cf50ddbe576071eb0e334421202bcab19aa6de6b93e042447ca4797a24bf97e1d053ffd kde-np.pam" diff --git a/user/kscreenlocker/kde-np.pam b/user/kscreenlocker/kde-np.pam new file mode 100644 index 000000000..07b7861ed --- /dev/null +++ b/user/kscreenlocker/kde-np.pam @@ -0,0 +1,10 @@ +#%PAM-1.0 + +auth required pam_nologin.so +auth required pam_permit.so + +account include base-account + +password include base-password + +session include base-session-noninteractive diff --git a/user/kscreenlocker/kde.pam b/user/kscreenlocker/kde.pam new file mode 100644 index 000000000..1b9e446ce --- /dev/null +++ b/user/kscreenlocker/kde.pam @@ -0,0 +1,11 @@ +#%PAM-1.0 + +auth required pam_nologin.so + +auth include base-auth + +account include base-account + +password include base-password + +session include base-session-noninteractive 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) |