#include "auth.h"
#include "kex.h"
#include "dh.h"
+#ifdef TARGET_OS_MAC /* XXX Broken krb5 headers on Mac */
+#undef TARGET_OS_MAC
#include "zlib.h"
+#define TARGET_OS_MAC 1
+#else
+#include "zlib.h"
+#endif
#include "packet.h"
#include "auth-options.h"
#include "sshpty.h"
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);
int
mm_answer_pam_start(int socket, Buffer *m)
{
- char *user;
-
if (!options.use_pam)
fatal("UsePAM not set, but ended up in %s anyway", __func__);
- user = buffer_get_string(m, NULL);
-
- start_pam(user);
-
- xfree(user);
+ start_pam(authctxt);
monitor_permit(mon_dispatch, MONITOR_REQ_PAM_ACCOUNT, 1);
mm_answer_gss_sign(int socket, Buffer *m) {
gss_buffer_desc data,hash;
OM_uint32 major,minor;
+ u_int len;
- data.value = buffer_get_string(m,&data.length);
- if (data.length != 16) { /* HACK - i.e. we are using SSHv1 */
+ data.value = buffer_get_string(m, &len);
+ data.length = len;
if (data.length != 20)
- fatal("%s: data length incorrect: %d", __func__, data.length);
+ fatal("%s: data length incorrect: %d", __func__,
+ (int)data.length);
/* Save the session ID - only first time round */
if (session_id2_len == 0) {
session_id2 = xmalloc(session_id2_len);
memcpy(session_id2, data.value, session_id2_len);
}
- } /* HACK - end */
major=ssh_gssapi_sign(gsscontext, &data, &hash);
xfree(data.value);