Skip to content

Commit

Permalink
Allow missing authenticator checksum with GSSAPI
Browse files Browse the repository at this point in the history
Some SMB client implementations omit the authenticator checksum.  To
interoperate with these clients, a server needs to allow missing
checksums and assume no flags are requested.  This is being documented
in MS-KILE as well, as Microsoft does the same.

[ghudson@mit.edu: edited and reformatted comment; edited commit
message summary]

ticket: 8227 (new)
  • Loading branch information
simo5 authored and greghudson committed Aug 4, 2015
1 parent 7746bed commit 0e60d5c
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/lib/gssapi/krb5/accept_sec_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -670,13 +670,15 @@ kg_accept_krb5(minor_status, context_handle,
#endif

if (authdat->checksum == NULL) {
/* missing checksum counts as "inappropriate type" */
code = KRB5KRB_AP_ERR_INAPP_CKSUM;
major_status = GSS_S_FAILURE;
goto fail;
}

if (authdat->checksum->checksum_type != CKSUMTYPE_KG_CB) {
/*
* Some SMB client implementations use handcrafted GSSAPI code that
* does not provide a checksum. MS-KILE documents that the Microsoft
* implementation considers a missing checksum acceptable; the server
* assumes all flags are unset in this case, and does not check channel
* bindings.
*/
gss_flags = 0;
} else if (authdat->checksum->checksum_type != CKSUMTYPE_KG_CB) {
/* Samba does not send 0x8003 GSS-API checksums */
krb5_boolean valid;
krb5_key subkey;
Expand Down

0 comments on commit 0e60d5c

Please sign in to comment.