]> git.sur5r.net Git - i3/i3lock/commitdiff
only use mlock() on Linux, FreeBSD (for example) requires root
authorMichael Stapelberg <michael@stapelberg.de>
Wed, 22 Aug 2012 18:49:10 +0000 (20:49 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 22 Aug 2012 18:49:10 +0000 (20:49 +0200)
i3lock.c

index 35eaca624a6cd1a11c9587aa8998e745fb2a6557..e11bfe626630674e30bc0ae0d81f93b7cc232251 100644 (file)
--- a/i3lock.c
+++ b/i3lock.c
@@ -645,11 +645,16 @@ int main(int argc, char *argv[]) {
     if (ret != PAM_SUCCESS)
         errx(EXIT_FAILURE, "PAM: %s", pam_strerror(pam_handle, ret));
 
+/* Using mlock() as non-super-user seems only possible in Linux. Users of other
+ * operating systems should use encrypted swap/no swap (or remove the ifdef and
+ * run i3lock as super-user). */
+#if defined(__linux__)
     /* Lock the area where we store the password in memory, we don’t want it to
      * be swapped to disk. Since Linux 2.6.9, this does not require any
      * privileges, just enough bytes in the RLIMIT_MEMLOCK limit. */
     if (mlock(password, sizeof(password)) != 0)
         err(EXIT_FAILURE, "Could not lock page in memory, check RLIMIT_MEMLOCK");
+#endif
 
     /* Initialize connection to X11 */
     if ((conn = xcb_connect(NULL, &nscreen)) == NULL ||