mirror of
https://github.com/samba-team/samba.git
synced 2025-03-12 20:58:37 +03:00
Also accept 0x15 getdc replies
My NT4SP6 which my DC here trusts sends 0x15 instead of 0x13, from looking at the sniff at least the DC name is at the same place. (This used to be commit 79bc6796b81395d591fc6ef389f153dd981fe68b)
This commit is contained in:
parent
5f68ea53ff
commit
0f37cd0c8e
@ -1145,28 +1145,31 @@ static bool receive_getdc_response(struct sockaddr_storage *dc_ss,
|
||||
/* This should be (buf-4)+SVAL(buf-4, smb_vwv12)... */
|
||||
p = buf+SVAL(buf, smb_vwv10);
|
||||
|
||||
if (CVAL(p,0) != SAMLOGON_R) {
|
||||
switch (CVAL(p, 0)) {
|
||||
case SAMLOGON_R:
|
||||
case SAMLOGON_UNK_R:
|
||||
p+=2;
|
||||
pull_ucs2(buf, dcname, p, sizeof(dcname), PTR_DIFF(buf+len, p),
|
||||
STR_TERMINATE|STR_NOALIGN);
|
||||
p = skip_unibuf(p, PTR_DIFF(buf+len, p));
|
||||
pull_ucs2(buf, user, p, sizeof(user), PTR_DIFF(buf+len, p),
|
||||
STR_TERMINATE|STR_NOALIGN);
|
||||
p = skip_unibuf(p, PTR_DIFF(buf+len, p));
|
||||
pull_ucs2(buf, domain, p, sizeof(domain), PTR_DIFF(buf+len, p),
|
||||
STR_TERMINATE|STR_NOALIGN);
|
||||
p = skip_unibuf(p, PTR_DIFF(buf+len, p));
|
||||
|
||||
if (!strequal(domain, domain_name)) {
|
||||
DEBUG(3, ("GetDC: Expected domain %s, got %s\n",
|
||||
domain_name, domain));
|
||||
return False;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
DEBUG(8, ("GetDC got invalid response type %d\n", CVAL(p, 0)));
|
||||
return False;
|
||||
}
|
||||
|
||||
p+=2;
|
||||
pull_ucs2(buf, dcname, p, sizeof(dcname), PTR_DIFF(buf+len, p),
|
||||
STR_TERMINATE|STR_NOALIGN);
|
||||
p = skip_unibuf(p, PTR_DIFF(buf+len, p));
|
||||
pull_ucs2(buf, user, p, sizeof(dcname), PTR_DIFF(buf+len, p),
|
||||
STR_TERMINATE|STR_NOALIGN);
|
||||
p = skip_unibuf(p, PTR_DIFF(buf+len, p));
|
||||
pull_ucs2(buf, domain, p, sizeof(dcname), PTR_DIFF(buf+len, p),
|
||||
STR_TERMINATE|STR_NOALIGN);
|
||||
p = skip_unibuf(p, PTR_DIFF(buf+len, p));
|
||||
|
||||
if (!strequal(domain, domain_name)) {
|
||||
DEBUG(3, ("GetDC: Expected domain %s, got %s\n",
|
||||
domain_name, domain));
|
||||
return False;
|
||||
}
|
||||
|
||||
p = dcname;
|
||||
if (*p == '\\') p += 1;
|
||||
if (*p == '\\') p += 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user