libcli: permit larger values of DataLength in SMB2_ENCRYPTION_CAPABILITIES of negotia...
authorPhilipp Gesang <philipp.gesang@intra2net.com>
Thu, 14 Feb 2019 09:17:28 +0000 (10:17 +0100)
committerKarolin Seeger <kseeger@samba.org>
Tue, 2 Apr 2019 13:44:38 +0000 (13:44 +0000)
commitd59cefc8c3bf025c454193f501bd18b8786ac737
treef60140a483fdbca2edb994f225399e70eea7b537
parent9c52fdc18713e6d9c1c871eaf18c3fbf3b2a53cd
libcli: permit larger values of DataLength in SMB2_ENCRYPTION_CAPABILITIES of negotiate response

Certain Netapp versions are sending SMB2_ENCRYPTION_CAPABILITIES
structures containing DataLength field that includes the padding
[0]. Microsoft has since clarified that only values smaller than
the size are considered invalid [1].

While parsing the NegotiateContext it is ensured that DataLength
does not exceed the message bounds. Also, the value is not
actually used anywhere outside the validation. Thus values
greater than the actual data size are safe to use. This patch
makes Samba fail only on values that are too small for the (fixed
size) payload.

[0] https://lists.samba.org/archive/samba/2019-February/221139.html
[1] https://lists.samba.org/archive/cifs-protocol/2019-March/003210.html

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13869

Signed-off-by: Philipp Gesang <philipp.gesang@intra2net.com>
Reviewed-by: Ralph Böhme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Sun Mar 31 01:11:09 UTC 2019 on sn-devel-144

(cherry picked from commit 865b7b0c7d2ba7fa0a045586d1e83a72028a0864)

Autobuild-User(v4-9-test): Karolin Seeger <kseeger@samba.org>
Autobuild-Date(v4-9-test): Tue Apr  2 13:44:38 UTC 2019 on sn-devel-144
libcli/smb/smbXcli_base.c