From: dtucker Date: Wed, 14 Apr 2004 07:24:30 +0000 (+0000) Subject: - (dtucker) [auth-skey.c defines.h monitor.c] Make skeychallenge explicitly X-Git-Tag: V_3_8_1_P1~10 X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/commitdiff_plain/f2b7b5c80cfa7793f1b8871189ecb3d4cc59c650 - (dtucker) [auth-skey.c defines.h monitor.c] Make skeychallenge explicitly 4-arg, with compatibility for 3-arg versions. From djm@, ok me. --- diff --git a/ChangeLog b/ChangeLog index c28915f5..afc94920 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ from bug #701 (text from jfh at cise.ufl.edu). - (dtucker) [acconfig.h configure.ac defines.h] Bug #673: check for 4-arg skeychallenge(), eg on NetBSD. ok mouring@ + - (dtucker) [auth-skey.c defines.h monitor.c] Make skeychallenge explicitly + 4-arg, with compatibility for 3-arg versions. From djm@, ok me. 20040408 - (dtucker) [loginrec.c] Use UT_LINESIZE if available, prevents truncating diff --git a/auth-skey.c b/auth-skey.c index f9ea03fd..ac1af69e 100644 --- a/auth-skey.c +++ b/auth-skey.c @@ -47,7 +47,8 @@ skey_query(void *ctx, char **name, char **infotxt, int len; struct skey skey; - if (skeychallenge(&skey, authctxt->user, challenge) == -1) + if (_compat_skeychallenge(&skey, authctxt->user, challenge, + sizeof(challenge)) == -1) return -1; *name = xstrdup(""); diff --git a/defines.h b/defines.h index f5c599b6..889b9188 100644 --- a/defines.h +++ b/defines.h @@ -538,6 +538,12 @@ struct winsize { # define krb5_get_err_text(context,code) error_message(code) #endif +#if defined(SKEYCHALLENGE_4ARG) +# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c,d) +#else +# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c) +#endif + /* Maximum number of file descriptors available */ #ifdef HAVE_SYSCONF # define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX) @@ -546,11 +552,6 @@ struct winsize { #endif -/* Some platforms, eg NetBSD, have a 4th argument for skeychallenge() */ -#ifdef SKEYCHALLENGE_4ARG -# define skeychallenge(a,b,c) skeychallenge((a), (b), (c), (sizeof(c))) -#endif - /* * Define this to use pipes instead of socketpairs for communicating with the * client program. Socketpairs do not seem to work on all systems. diff --git a/monitor.c b/monitor.c index 37d40fcc..9c30c1c3 100644 --- a/monitor.c +++ b/monitor.c @@ -744,7 +744,8 @@ mm_answer_skeyquery(int socket, Buffer *m) char challenge[1024]; u_int success; - success = skeychallenge(&skey, authctxt->user, challenge) < 0 ? 0 : 1; + success = _compat_skeychallenge(&skey, authctxt->user, challenge, + sizeof(challenge)) < 0 ? 0 : 1; buffer_clear(m); buffer_put_int(m, success);