version 1.128, 2003/10/26 16:57:43 |
version 1.129, 2003/11/02 11:01:03 |
|
|
|
|
packet_put_int(1); |
packet_put_int(1); |
|
|
/* Some servers encode the OID incorrectly (as we used to) */ |
packet_put_int((gss_supported->elements[mech].length) + 2); |
if (datafellows & SSH_BUG_GSSAPI_BER) { |
packet_put_char(SSH_GSS_OIDTYPE); |
packet_put_string(gss_supported->elements[mech].elements, |
packet_put_char(gss_supported->elements[mech].length); |
gss_supported->elements[mech].length); |
packet_put_raw(gss_supported->elements[mech].elements, |
} else { |
gss_supported->elements[mech].length); |
packet_put_int((gss_supported->elements[mech].length)+2); |
|
packet_put_char(SSH_GSS_OIDTYPE); |
|
packet_put_char(gss_supported->elements[mech].length); |
|
packet_put_raw(gss_supported->elements[mech].elements, |
|
gss_supported->elements[mech].length); |
|
} |
|
|
|
packet_send(); |
packet_send(); |
|
|
|
|
/* Setup our OID */ |
/* Setup our OID */ |
oidv = packet_get_string(&oidlen); |
oidv = packet_get_string(&oidlen); |
|
|
if (datafellows & SSH_BUG_GSSAPI_BER) { |
if (oidlen <= 2 || |
if (!ssh_gssapi_check_oid(gssctxt, oidv, oidlen)) |
oidv[0] != SSH_GSS_OIDTYPE || |
fatal("Server returned different OID than expected"); |
oidv[1] != oidlen - 2) { |
} else { |
debug("Badly encoded mechanism OID received"); |
if(oidv[0] != SSH_GSS_OIDTYPE || oidv[1] != oidlen-2) { |
userauth(authctxt, NULL); |
debug("Badly encoded mechanism OID received"); |
xfree(oidv); |
userauth(authctxt, NULL); |
return; |
xfree(oidv); |
|
return; |
|
} |
|
if (!ssh_gssapi_check_oid(gssctxt, oidv+2, oidlen-2)) |
|
fatal("Server returned different OID than expected"); |
|
} |
} |
|
|
|
if (!ssh_gssapi_check_oid(gssctxt, oidv + 2, oidlen - 2)) |
|
fatal("Server returned different OID than expected"); |
|
|
packet_check_eom(); |
packet_check_eom(); |
|
|