summaryrefslogtreecommitdiff
path: root/auth-skey.c
diff options
context:
space:
mode:
Diffstat (limited to 'auth-skey.c')
-rw-r--r--auth-skey.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/auth-skey.c b/auth-skey.c
index f676dbec9..cb43dba48 100644
--- a/auth-skey.c
+++ b/auth-skey.c
@@ -1,3 +1,4 @@
1/* $OpenBSD: auth-skey.c,v 1.27 2007/01/21 01:41:54 stevesk Exp $ */
1/* 2/*
2 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
3 * 4 *
@@ -21,15 +22,23 @@
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */ 24 */
25
24#include "includes.h" 26#include "includes.h"
25RCSID("$OpenBSD: auth-skey.c,v 1.20 2002/06/30 21:59:45 deraadt Exp $");
26 27
27#ifdef SKEY 28#ifdef SKEY
28 29
30#include <sys/types.h>
31
32#include <pwd.h>
33#include <stdio.h>
34
29#include <skey.h> 35#include <skey.h>
30 36
31#include "xmalloc.h" 37#include "xmalloc.h"
38#include "key.h"
39#include "hostfile.h"
32#include "auth.h" 40#include "auth.h"
41#include "ssh-gss.h"
33#include "monitor_wrap.h" 42#include "monitor_wrap.h"
34 43
35static void * 44static void *
@@ -43,26 +52,20 @@ skey_query(void *ctx, char **name, char **infotxt,
43 u_int* numprompts, char ***prompts, u_int **echo_on) 52 u_int* numprompts, char ***prompts, u_int **echo_on)
44{ 53{
45 Authctxt *authctxt = ctx; 54 Authctxt *authctxt = ctx;
46 char challenge[1024], *p; 55 char challenge[1024];
47 int len;
48 struct skey skey; 56 struct skey skey;
49 57
50 if (_compat_skeychallenge(&skey, authctxt->user, challenge, 58 if (_compat_skeychallenge(&skey, authctxt->user, challenge,
51 sizeof(challenge)) == -1) 59 sizeof(challenge)) == -1)
52 return -1; 60 return -1;
53 61
54 *name = xstrdup(""); 62 *name = xstrdup("");
55 *infotxt = xstrdup(""); 63 *infotxt = xstrdup("");
56 *numprompts = 1; 64 *numprompts = 1;
57 *prompts = xmalloc(*numprompts * sizeof(char *)); 65 *prompts = xcalloc(*numprompts, sizeof(char *));
58 *echo_on = xmalloc(*numprompts * sizeof(u_int)); 66 *echo_on = xcalloc(*numprompts, sizeof(u_int));
59 (*echo_on)[0] = 0; 67
60 68 xasprintf(*prompts, "%s%s", challenge, SKEY_PROMPT);
61 len = strlen(challenge) + strlen(SKEY_PROMPT) + 1;
62 p = xmalloc(len);
63 strlcpy(p, challenge, len);
64 strlcat(p, SKEY_PROMPT, len);
65 (*prompts)[0] = p;
66 69
67 return 0; 70 return 0;
68} 71}