Edit

IABSD.fr/src/usr.bin/ssh/auth2-kbdint.c

Branch :

  • Show log

    Commit

  • Author : deraadt
    Date : 2019-11-13 04:47:52
    Hash : d493747f
    Message : stdarg.h required more broadly; ok djm

  • usr.bin/ssh/auth2-kbdint.c
  • /* $OpenBSD: auth2-kbdint.c,v 1.11 2019/11/13 04:47:52 deraadt Exp $ */
    /*
     * Copyright (c) 2000 Markus Friedl.  All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     * 1. Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     * 2. Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    #include <sys/types.h>
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <stdarg.h>
    
    #include "xmalloc.h"
    #include "packet.h"
    #include "hostfile.h"
    #include "auth.h"
    #include "log.h"
    #include "misc.h"
    #include "servconf.h"
    #include "ssherr.h"
    
    /* import */
    extern ServerOptions options;
    
    static int
    userauth_kbdint(struct ssh *ssh)
    {
    	int r, authenticated = 0;
    	char *lang, *devs;
    
    	if ((r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0 ||
    	    (r = sshpkt_get_cstring(ssh, &devs, NULL)) != 0 ||
    	    (r = sshpkt_get_end(ssh)) != 0)
    		fatal("%s: %s", __func__, ssh_err(r));
    
    	debug("keyboard-interactive devs %s", devs);
    
    	if (options.challenge_response_authentication)
    		authenticated = auth2_challenge(ssh, devs);
    
    	free(devs);
    	free(lang);
    	return authenticated;
    }
    
    Authmethod method_kbdint = {
    	"keyboard-interactive",
    	userauth_kbdint,
    	&options.kbd_interactive_authentication
    };