Hi,

When login_skey is called for a user without skey it crashes with
NULL pointer dereference.  It tries to pass a file descriptor that
does not exist.  This has to be done conditionally.

ok?

bluhm

Index: libexec/login_skey/login_skey.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/libexec/login_skey/login_skey.c,v
retrieving revision 1.25
diff -u -p -r1.25 login_skey.c
--- libexec/login_skey/login_skey.c     16 Oct 2015 13:37:43 -0000      1.25
+++ libexec/login_skey/login_skey.c     19 Jul 2017 13:54:18 -0000
@@ -160,9 +160,11 @@ main(int argc, char *argv[])
                fprintf(back, BI_VALUE " challenge %s\n",
                    auth_mkvalue(challenge));
                fprintf(back, BI_CHALLENGE "\n");
-               fprintf(back, BI_FDPASS "\n");
-               fflush(back);
-               send_fd(fileno(back));
+               if (haskey) {
+                       fprintf(back, BI_FDPASS "\n");
+                       fflush(back);
+                       send_fd(fileno(back));
+               }
                exit(0);
 
        case MODE_RESPONSE:

Reply via email to