{ "OpenSSH_2.9p*", SSH_OLD_GSSAPI },
{ "OpenSSH_2.*,"
"OpenSSH_3.0*,"
- "OpenSSH_3.1*", SSH_BUG_EXTEOF},
+ "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_BUG_GSS_EMPTYUSER},
{ "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF},
{ "OpenSSH*", 0 },
{ "*MindTerm*", 0 },
#define SSH_BUG_EXTEOF 0x00200000
#define SSH_BUG_K5USER 0x00400000
#define SSH_OLD_GSSAPI 0x00800000
+#define SSH_BUG_GSS_EMPTYUSER 0x01000000
void enable_compat13(void);
void enable_compat20(void);
authctxt->methoddata=(void *)gssctxt;
packet_start(SSH2_MSG_USERAUTH_REQUEST);
- if(options.implicit) packet_put_cstring("");
- else packet_put_cstring(authctxt->server_user);
+ if(options.implicit && !(datafellows & SSH_BUG_GSS_EMPTYUSER)) {
+ packet_put_cstring("");
+ } else {
+ packet_put_cstring(authctxt->server_user);
+ }
packet_put_cstring(authctxt->service);
packet_put_cstring(authctxt->method->name);
debug2("userauth_external");
packet_start(SSH2_MSG_USERAUTH_REQUEST);
- if(options.implicit) packet_put_cstring("");
- else packet_put_cstring(authctxt->server_user);
+ if(options.implicit && !(datafellows & SSH_BUG_GSS_EMPTYUSER)) {
+ packet_put_cstring("");
+ } else {
+ packet_put_cstring(authctxt->server_user);
+ }
packet_put_cstring(authctxt->service);
packet_put_cstring(authctxt->method->name);
packet_send();