pledge "stdio rpath" is good enough for these mainline BSD auth login
authorderaadt <deraadt@openbsd.org>
Wed, 14 Oct 2015 17:06:58 +0000 (17:06 +0000)
committerderaadt <deraadt@openbsd.org>
Wed, 14 Oct 2015 17:06:58 +0000 (17:06 +0000)
programs.
(I am very surprised pledge ended up working for programs like this)
ok semarie millert

libexec/login_passwd/login_passwd.c
libexec/login_reject/login_reject.c

index d769bdc..d6ada58 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: login_passwd.c,v 1.11 2015/10/05 17:31:17 millert Exp $       */
+/*     $OpenBSD: login_passwd.c,v 1.12 2015/10/14 17:06:58 deraadt Exp $       */
 
 /*-
  * Copyright (c) 2001 Hans Insulander <hin@openbsd.org>.
@@ -51,6 +51,10 @@ pwd_login(char *username, char *password, char *wheel, int lastchance,
                goodhash = pwd->pw_passwd;
 
        setpriority(PRIO_PROCESS, 0, -4);
+
+       if (pledge("stdio rpath", NULL) == -1)
+               err(1, "pledge");
+
        if (crypt_checkpass(password, goodhash) == 0)
                passok = 1;
        plen = strlen(password);
index 167bd95..a609c51 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: login_reject.c,v 1.10 2014/11/03 16:50:20 tedu Exp $  */
+/*     $OpenBSD: login_reject.c,v 1.11 2015/10/14 17:06:58 deraadt Exp $       */
 
 /*-
  * Copyright (c) 1995 Berkeley Software Design, Inc. All rights reserved.
@@ -65,6 +65,9 @@ main(int argc, char *argv[])
 
        (void)setpriority(PRIO_PROCESS, 0, 0);
 
+       if (pledge("stdio rpath", NULL) == -1)
+               err(1, "pledge");
+
        openlog("login", LOG_ODELAY, LOG_AUTH);
 
        while ((c = getopt(argc, argv, "v:s:")) != -1)