diff --git a/ChangeLog b/ChangeLog index 409c9bae5..d8cab5caa 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 @@ -963,4 +965,4 @@ - (djm) Trim deprecated options from INSTALL. Mention UsePAM - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu -$Id: ChangeLog,v 1.3309 2004/04/14 05:26:39 dtucker Exp $ +$Id: ChangeLog,v 1.3310 2004/04/14 07:24:30 dtucker Exp $ diff --git a/auth-skey.c b/auth-skey.c index f9ea03fd1..ac1af69ed 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 f52dfd256..9b72afecb 100644 --- a/defines.h +++ b/defines.h @@ -25,7 +25,7 @@ #ifndef _DEFINES_H #define _DEFINES_H -/* $Id: defines.h,v 1.114 2004/04/14 05:26:39 dtucker Exp $ */ +/* $Id: defines.h,v 1.115 2004/04/14 07:24:30 dtucker Exp $ */ /* Constants */ @@ -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 37d40fcca..9c30c1c39 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);