The branch, master has been updated via b706ca6 s3:libsmb: call smb2cli_logoff() from cli_ulogoff() via 1d7bdfc s3:libsmb: make cli_ulogoff_send/recv static via e6be68f s3:libsmb: call smb2cli_tdis() from cli_tdis() via d732e9a s3:libsmb: only set tcon to invalid in smb2cli_tdis* via 80d4f64 s3:libsmb: make cli_tdis_send/recv static via ccf7b37 s3:libsmb: add support for SMB2 in cli_writeall() via a85d451 s3:libsmb: add SMB2 support to cli_pull* via 6896bf0 s3:libsmb: add SMB2 support to cli_push* via 80758e4 s3:libsmb: Plumb cli_smb2_set_security_descriptor() inside cli_set_security_descriptor(). via 1db7e90 s3:libsmb: Plumb cli_smb2_query_security_descriptor() inside cli_query_security_descriptor(). via de895bf s3:libsmb: Plumb cli_smb2_qpathinfo_alt_name() inside cli_qpathinfo_alt_name(). via cba3ed0 s3:libsmb: Plumb cli_smb2_qpathinfo_basic() inside cli_qpathinfo_basic(). via 2bb3e25 s3:libsmb: Plumb cli_smb2_qfileinfo_basic() inside cli_qfileinfo_basic(). via e96309c s3:libsmb: Plumb cli_smb2_qpathinfo_streams() inside cli_qpathinfo_streams(). via f2f566b s3:libsmb: Plumb cli_smb2_qpathinfo2() inside cli_qpathinfo2(). via 73255d3 s3:libsmb: Plumb cli_smb2_list() inside cli_list(). via 7e2d969 s3:libsmb: Plumb cli_smb2_get_ea_list_path() inside cli_get_ea_list_path(). via f8dfc50 s3:libsmb: Plumb cli_smb2_set_ea_fnum() inside cli_set_ea_fnum(). via 3276853 s3:libsmb: Plumb cli_smb2_set_ea_path() inside cli_set_ea_path(). via c1aeada s3:libsmb: Fix cli_set_ea_path() to use frame instead of talloc_tos(). via c6ed0b8 s3:libsmb: Plumb cli_smb2_dskattr() inside cli_dskattr(). via 75d2e18 s3:libsmb: Plumb cli_smb2_getatr() inside cli_getatr(). via ea267a7 s3:libsmb: Plumb cli_smb2_setatr() inside cli_setatr(). via 83c410c s3:libsmb: Plumb cli_smb2_setattrE() inside cli_setattrE(). via 0bbc044 s3:libsmb: Plumb cli_smb2_getattrE() inside cli_getattrE(). via 85f60cc s3:libsmb: Plumb cli_smb2_close_fnum() inside cli_close(). via c1c4491 s3:libsmb: Plumb cli_smb2_create_fnum() inside cli_ntcreate(). via 04d3965 s3:libsmb: Plumb cli_smb2_rmdir() inside cli_rmdir(). via 46da267 s3:libsmb: Plumb cli_smb2_mkdir() inside cli_mkdir(). via 179c27d s3:libsmb: Plumb cli_smb2_unlink() inside cli_unlink(). via c748a95 s3:libsmb: Plumb cli_smb2_rename() inside cli_rename(). via 28591df s3:libsmb: Add in the core of the libsmb client SMB2 functions. via c80349e s3:lib: Factor read_ea_list_entry() and read_nttrans_ea_list() out so they can be used by the SMB2 client code. via 2394f87 s3:client: fix compiler warning via 9b4692f s3:client: use the default io size via 9193a58 s3:libsmb: remove unused cli_readall* via 8062aef s3:libsmb: rewrite cli_pull* to use smb1cli_conn_req_possible() via b846b3a s3:libsmb: rewrite cli_push* to use smb1cli_conn_req_possible() via 7efdc32 libcli/smb: add smb2cli_conn_req_possible() via 111f529 libcli/smb: add smb1cli_conn_req_possible() via 44b5393 libcli/smb: pass max_dyn_len to smb2cli_req_send() via 4a33520 libcli/smb: pass max_dyn_len to smb2cli_req_create() via 318735f libcli/smb: calculate the credit charge on the input and output dyn_len via 1229881 libcli/smb: Change smb2cli_create() and smb2cli_create_recv() to return a parameter blob of the newly opened/created file. via 00f784e libcli/smb: Fix smb2cli_write_recv() and smb2cli_write() to return the bytes written. via 97288b7 libcli/smb: fix the credit handling on a SMB1 => SMB2 negotiate via f6ce50a s3:smbcacls: Add -m<MAX PROTOCOL> option to smbcacls. via daeb0bd s3:libsmb: make use of lp_cli_{min,max}protocol() in SMBC_server_internal() via 42a493d s3:libsmb: use lp_cli_minprotocol() in do_connect() via dd9155a s3:winbindd: make use of lp_cli_{min,max}protocol() via 7e455e9 s3:lib/netapi: make use of lp_cli_maxprotocol() via 1442132 s3:libsmb: Ensure we ask for DEFAULT_SMB2_MAX_CREDITS on successful negprot. via 42f510c s3:libsmb: Modify cli_start_connection_connected() to use lp_cli_minprotocol()/lp_cli_maxprotocol() instead of hard coding PROTOCOL_CORE, PROTOCOL_NT1. via 9188ee4 s3:lib: remove unused interpret_protocol() via 2c3c8ca s3:torture: avoid interpret_protocol() via 861ee93 s3:client: avoid interpret_protocol() via f2fb829 s3:param: Correctly set up cli_maxprotocol, cli_minprotocol in our parameter block. from 7080917 Followup patch for BUG: https://bugzilla.samba.org/show_bug.cgi?id=10082
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit b706ca6e55aa76d4da901c69d991969602facc3b Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 15:18:47 2013 -0700 s3:libsmb: call smb2cli_logoff() from cli_ulogoff() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Stefan Metzmacher <me...@samba.org> Autobuild-Date(master): Thu Aug 15 10:53:21 CEST 2013 on sn-devel-104 commit 1d7bdfc4feac35d92b003c3c78f502897ecc5d4e Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 11:48:40 2013 +0200 s3:libsmb: make cli_ulogoff_send/recv static Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit e6be68fb5e4dc528f7365f3413b9b66090992f42 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 11:44:58 2013 +0200 s3:libsmb: call smb2cli_tdis() from cli_tdis() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d732e9aab3bbad3ea97f8b120e57b41152aaee3b Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 11:44:10 2013 +0200 s3:libsmb: only set tcon to invalid in smb2cli_tdis* This matches the behavior of cli_tdis*. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 80d4f64352c0ddacb9ee15d2b48a42a0b7929501 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 11:38:22 2013 +0200 s3:libsmb: make cli_tdis_send/recv static Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit ccf7b3719121e03ed06d15b9af5373eecba3e828 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 18:38:57 2013 +0200 s3:libsmb: add support for SMB2 in cli_writeall() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit a85d4511e6bc84938d60f090b44a5b1468ee4136 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 18:20:08 2013 +0200 s3:libsmb: add SMB2 support to cli_pull* Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 6896bf0b28a07eb8ead5b3bd2bc50229aa59d439 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 16:33:30 2013 +0200 s3:libsmb: add SMB2 support to cli_push* Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 80758e4b07c87280e778ba161c2c9c4a2ee47853 Author: Jeremy Allison <j...@samba.org> Date: Thu Aug 8 11:00:49 2013 -0700 s3:libsmb: Plumb cli_smb2_set_security_descriptor() inside cli_set_security_descriptor(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 1db7e90451f31d75298508c19a859d98d56d7e7c Author: Jeremy Allison <j...@samba.org> Date: Thu Aug 8 11:00:08 2013 -0700 s3:libsmb: Plumb cli_smb2_query_security_descriptor() inside cli_query_security_descriptor(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit de895bf228432f2a42bcdcadcf12ffd1be64022f Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:50:03 2013 -0700 s3:libsmb: Plumb cli_smb2_qpathinfo_alt_name() inside cli_qpathinfo_alt_name(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit cba3ed0466b8598e28a44809778b99e97b1bf1a1 Author: Jeremy Allison <j...@samba.org> Date: Thu Aug 8 10:52:02 2013 -0700 s3:libsmb: Plumb cli_smb2_qpathinfo_basic() inside cli_qpathinfo_basic(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 2bb3e251d59910d9bf527a73271094702bceefe2 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:47:21 2013 -0700 s3:libsmb: Plumb cli_smb2_qfileinfo_basic() inside cli_qfileinfo_basic(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit e96309ca1b057d430444531523bb2c9f59fcd624 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:46:05 2013 -0700 s3:libsmb: Plumb cli_smb2_qpathinfo_streams() inside cli_qpathinfo_streams(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit f2f566b1cc8d55bd1cf93478b877a3e7f455855c Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:45:05 2013 -0700 s3:libsmb: Plumb cli_smb2_qpathinfo2() inside cli_qpathinfo2(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 73255d3ba912b3a112f9d766deae895f51e16cd9 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:43:33 2013 -0700 s3:libsmb: Plumb cli_smb2_list() inside cli_list(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 7e2d969deb1d4bcf3add422d80852b2d386cfaac Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:42:02 2013 -0700 s3:libsmb: Plumb cli_smb2_get_ea_list_path() inside cli_get_ea_list_path(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit f8dfc50124e5b5083aa801d9658389dd3fa6698a Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:32:55 2013 -0700 s3:libsmb: Plumb cli_smb2_set_ea_fnum() inside cli_set_ea_fnum(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 3276853e59c2686873baad7c6f9d2665ed6fdd56 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:21:48 2013 -0700 s3:libsmb: Plumb cli_smb2_set_ea_path() inside cli_set_ea_path(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit c1aeada4dd1f165eb33354c5a4323ed1ebf453a9 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:19:06 2013 -0700 s3:libsmb: Fix cli_set_ea_path() to use frame instead of talloc_tos(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit c6ed0b88312d7e231749a09a87944caea4c9808e Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:17:12 2013 -0700 s3:libsmb: Plumb cli_smb2_dskattr() inside cli_dskattr(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 75d2e18502ccb811c018535f3c5c7325bdf5e613 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 14 14:37:11 2013 -0700 s3:libsmb: Plumb cli_smb2_getatr() inside cli_getatr(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit ea267a7e4b4c413336b2bf54eb53ffc8d1524b44 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:16:03 2013 -0700 s3:libsmb: Plumb cli_smb2_setatr() inside cli_setatr(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 83c410c99e3ef8db00dd002c1a1a93b0035cd2e7 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:14:47 2013 -0700 s3:libsmb: Plumb cli_smb2_setattrE() inside cli_setattrE(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 0bbc0446210fa504f9834de948c4d066df752666 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:11:59 2013 -0700 s3:libsmb: Plumb cli_smb2_getattrE() inside cli_getattrE(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 85f60cc3d8f68ce5eb687cc6e367bb66bdef8b99 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:10:34 2013 -0700 s3:libsmb: Plumb cli_smb2_close_fnum() inside cli_close(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit c1c4491d5e5bb16c274fe4fe162156a7ec910b93 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:06:19 2013 -0700 s3:libsmb: Plumb cli_smb2_create_fnum() inside cli_ntcreate(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 04d396566b90f32dc239450596ab50502f9cbb02 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:03:00 2013 -0700 s3:libsmb: Plumb cli_smb2_rmdir() inside cli_rmdir(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 46da267afd540fe2d31f1395cda9e2853cf6432a Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:01:49 2013 -0700 s3:libsmb: Plumb cli_smb2_mkdir() inside cli_mkdir(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 179c27dd0235c4949045eef2ffb7a87175a4483b Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 16:00:40 2013 -0700 s3:libsmb: Plumb cli_smb2_unlink() inside cli_unlink(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit c748a959b40f184190cd537f0ad5f0772b484841 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 15:59:13 2013 -0700 s3:libsmb: Plumb cli_smb2_rename() inside cli_rename(). Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 28591dfd5d2163d9181d45d64a4a750e335b7c56 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 15:54:05 2013 -0700 s3:libsmb: Add in the core of the libsmb client SMB2 functions. These create a synchronous cli_smb2_XXX() style interface designed to plug directly into the libsmb/cliXXXX.c code. https://bugzilla.samba.org/show_bug.cgi?id=9974 Signed-off-by: Jeremy Allison <j...@samba.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> commit c80349e0fad7c182b0bddefed99a78d95323faca Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 13:48:55 2013 -0700 s3:lib: Factor read_ea_list_entry() and read_nttrans_ea_list() out so they can be used by the SMB2 client code. Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 2394f8788d2f6e21064db0b6099a0dbe3a33e1d6 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 10:47:11 2013 +0200 s3:client: fix compiler warning Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 9b4692f2d057f31f76db0bdf7c4a515db057e2dd Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 10:46:28 2013 +0200 s3:client: use the default io size Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 9193a58375691bfca9e3cce1ff61b2b6dd65a982 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 18:23:55 2013 +0200 s3:libsmb: remove unused cli_readall* Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 8062aefbe3c2fcc73e3d19af6663c8736c570f7c Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 18:03:50 2013 +0200 s3:libsmb: rewrite cli_pull* to use smb1cli_conn_req_possible() This works out if it's possible to ship the next request dynamically instead of relying on fixed values. The default window size is 16 MByte. We limit the number of outstanding chunks/requests to 256. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit b846b3acd2b217a0d67c1e8fcb039e03498c4e47 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 14:10:59 2013 +0200 s3:libsmb: rewrite cli_push* to use smb1cli_conn_req_possible() This works out if it's possible to ship the next request dynamically instead of relying on fixed values. The default window size is 16 MByte. We limit the number of outstanding chunks/requests to 256. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 7efdc323d1a1abdae70bcafefe07b3cffcdb2521 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 15:49:19 2013 +0200 libcli/smb: add smb2cli_conn_req_possible() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 111f529a2a5832b822445bb4f63b142d8ccb2cb7 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 14:05:05 2013 +0200 libcli/smb: add smb1cli_conn_req_possible() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 44b53937d59842a63e2cbfa92219f4f519530b0a Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 10:25:52 2013 +0200 libcli/smb: pass max_dyn_len to smb2cli_req_send() This way we can calculate the correct credit charge for requests with large output buffers. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 4a3352020db962ef40728d8a754da8a9418ca8a7 Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 09:54:42 2013 +0200 libcli/smb: pass max_dyn_len to smb2cli_req_create() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 318735fd5e15c5fd7010c0f657c86d27b45279ac Author: Stefan Metzmacher <me...@samba.org> Date: Tue Aug 13 09:50:29 2013 +0200 libcli/smb: calculate the credit charge on the input and output dyn_len Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 1229881df6bd22d4b5055ad283061332ba1c9bc8 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 15:01:50 2013 -0700 libcli/smb: Change smb2cli_create() and smb2cli_create_recv() to return a parameter blob of the newly opened/created file. Will use in the smb2 client code. Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 00f784ec91d2cfa95b20327ac20f5bc3fa1f400e Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 14:41:24 2013 -0700 libcli/smb: Fix smb2cli_write_recv() and smb2cli_write() to return the bytes written. Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 97288b7f1048c1bf712463293a1e62737738292c Author: Stefan Metzmacher <me...@samba.org> Date: Wed Aug 14 08:12:08 2013 +0200 libcli/smb: fix the credit handling on a SMB1 => SMB2 negotiate Our cur_credit value had 1 credit too many in the case of an SMB1 => SMB2 upgrade. When we max out the credits the server disconnected the connection. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit f6ce50a8aca9eb024af4eb5e3dd620fe5e04e913 Author: Jeremy Allison <j...@samba.org> Date: Thu Aug 8 11:43:16 2013 -0700 s3:smbcacls: Add -m<MAX PROTOCOL> option to smbcacls. https://bugzilla.samba.org/show_bug.cgi?id=9514 Signed-off-by: Jeremy Allison <j...@samba.org> Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit daeb0bdfc49ace6151bbca34cbbf55486d66abb6 Author: Stefan Metzmacher <me...@samba.org> Date: Sun Aug 11 14:01:36 2013 +0200 s3:libsmb: make use of lp_cli_{min,max}protocol() in SMBC_server_internal() https://bugzilla.samba.org/show_bug.cgi?id=9514 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 42a493dff0e4ade04b6e94caf0b7ae14b6cf60eb Author: Stefan Metzmacher <me...@samba.org> Date: Sun Aug 11 14:00:45 2013 +0200 s3:libsmb: use lp_cli_minprotocol() in do_connect() https://bugzilla.samba.org/show_bug.cgi?id=9514 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit dd9155a7ec7f1989cb18e79907d0fa1c9ee845a4 Author: Stefan Metzmacher <me...@samba.org> Date: Sun Aug 11 13:48:31 2013 +0200 s3:winbindd: make use of lp_cli_{min,max}protocol() This changes winbindd back to use NT1 as defeault. https://bugzilla.samba.org/show_bug.cgi?id=9514 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 7e455e9ed2b298df6b735a89abdd75564375ef34 Author: Stefan Metzmacher <me...@samba.org> Date: Sun Aug 11 13:46:34 2013 +0200 s3:lib/netapi: make use of lp_cli_maxprotocol() https://bugzilla.samba.org/show_bug.cgi?id=9514 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 14421323d1dd3744cb8553f0e6a5a7436554bf2d Author: Jeremy Allison <j...@samba.org> Date: Fri Aug 9 11:15:48 2013 -0700 s3:libsmb: Ensure we ask for DEFAULT_SMB2_MAX_CREDITS on successful negprot. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 42f510c155b98f3df5106aebd1de54d1749b9b1c Author: Jeremy Allison <j...@samba.org> Date: Thu Aug 8 11:35:44 2013 -0700 s3:libsmb: Modify cli_start_connection_connected() to use lp_cli_minprotocol()/lp_cli_maxprotocol() instead of hard coding PROTOCOL_CORE, PROTOCOL_NT1. https://bugzilla.samba.org/show_bug.cgi?id=9514 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 9188ee4ab195a18b1bd697bced8613f98a6a91d9 Author: Stefan Metzmacher <me...@samba.org> Date: Sun Aug 11 13:11:41 2013 +0200 s3:lib: remove unused interpret_protocol() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 2c3c8caa0cc7b085231b2edc100ce2332e1e0085 Author: Stefan Metzmacher <me...@samba.org> Date: Sun Aug 11 13:10:13 2013 +0200 s3:torture: avoid interpret_protocol() lp_set_cmdline("client max protocol",...) and lp_cli_maxprotocol() are the more generic solution. https://bugzilla.samba.org/show_bug.cgi?id=9514 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 861ee9319f3cce8f104fd30c7139323ac3d3319d Author: Stefan Metzmacher <me...@samba.org> Date: Sun Aug 11 13:08:49 2013 +0200 s3:client: avoid interpret_protocol() lp_set_cmdline("client max protocol",...) and lp_cli_maxprotocol() are the more generic solution. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit f2fb829cee81996c62ff91cb8d1e9997008ffb42 Author: Jeremy Allison <j...@samba.org> Date: Wed Aug 7 15:17:01 2013 -0700 s3:param: Correctly set up cli_maxprotocol, cli_minprotocol in our parameter block. Set to PROTOCOL_NT1, PROTOCOL_CORE by default. Bug: https://bugzilla.samba.org/show_bug.cgi?id=9829 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> ----------------------------------------------------------------------- Summary of changes: libcli/smb/smb2_create_blob.h | 12 + libcli/smb/smb2cli_close.c | 3 +- libcli/smb/smb2cli_create.c | 52 +- libcli/smb/smb2cli_echo.c | 3 +- libcli/smb/smb2cli_flush.c | 3 +- libcli/smb/smb2cli_ioctl.c | 13 +- libcli/smb/smb2cli_query_directory.c | 3 +- libcli/smb/smb2cli_query_info.c | 3 +- libcli/smb/smb2cli_read.c | 3 +- libcli/smb/smb2cli_session.c | 6 +- libcli/smb/smb2cli_set_info.c | 3 +- libcli/smb/smb2cli_write.c | 33 +- libcli/smb/smbXcli_base.c | 74 +- libcli/smb/smbXcli_base.h | 21 +- source3/client/client.c | 11 +- source3/include/client.h | 1 + source3/include/proto.h | 3 +- source3/lib/netapi/cm.c | 2 +- source3/lib/util.c | 25 - source3/lib/util_ea.c | 126 ++ .../libcli/raw/rawlpq.c => source3/lib/util_ea.h | 44 +- source3/libsmb/cli_np_tstream.c | 10 +- source3/libsmb/cli_smb2_fnum.c | 2373 ++++++++++++++++++++ source3/libsmb/cli_smb2_fnum.h | 161 ++ source3/libsmb/cliconnect.c | 37 +- source3/libsmb/clidfs.c | 8 +- source3/libsmb/clifile.c | 158 ++- source3/libsmb/clilist.c | 8 +- source3/libsmb/clirap.c | 64 +- source3/libsmb/clirap.h | 4 + source3/libsmb/clireadwrite.c | 908 +++++---- source3/libsmb/clisecdesc.c | 16 + source3/libsmb/libsmb.h | 1 + source3/libsmb/libsmb_server.c | 6 +- source3/libsmb/proto.h | 8 - source3/libsmb/smb2cli_tcon.c | 9 +- source3/param/loadparm.c | 2 + source3/smbd/nttrans.c | 44 +- source3/smbd/trans2.c | 62 +- source3/torture/masktest.c | 5 +- source3/torture/test_smb2.c | 62 +- source3/torture/torture.c | 3 +- source3/utils/smbcacls.c | 4 + source3/winbindd/winbindd_cm.c | 5 +- source3/wscript_build | 6 +- source4/libcli/smb2/transport.c | 9 +- 46 files changed, 3725 insertions(+), 692 deletions(-) create mode 100644 source3/lib/util_ea.c copy source4/libcli/raw/rawlpq.c => source3/lib/util_ea.h (61%) create mode 100644 source3/libsmb/cli_smb2_fnum.c create mode 100644 source3/libsmb/cli_smb2_fnum.h Changeset truncated at 500 lines: diff --git a/libcli/smb/smb2_create_blob.h b/libcli/smb/smb2_create_blob.h index 008befe..2f915b3 100644 --- a/libcli/smb/smb2_create_blob.h +++ b/libcli/smb/smb2_create_blob.h @@ -33,6 +33,18 @@ struct smb2_create_blobs { struct smb2_create_blob *blobs; }; +struct smb2_create_returns { + uint8_t oplock_level; + uint32_t create_action; + NTTIME creation_time; + NTTIME last_access_time; + NTTIME last_write_time; + NTTIME change_time; + uint64_t allocation_size; + uint64_t end_of_file; + uint32_t file_attributes; +}; + /* parse a set of SMB2 create blobs */ diff --git a/libcli/smb/smb2cli_close.c b/libcli/smb/smb2cli_close.c index ed15a20..5e31056 100644 --- a/libcli/smb/smb2cli_close.c +++ b/libcli/smb/smb2cli_close.c @@ -60,7 +60,8 @@ struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - NULL, 0); + NULL, 0, /* dyn* */ + 0); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_create.c b/libcli/smb/smb2cli_create.c index 627bdcb..3f8d672 100644 --- a/libcli/smb/smb2cli_create.c +++ b/libcli/smb/smb2cli_create.c @@ -27,17 +27,9 @@ struct smb2cli_create_state { uint8_t fixed[56]; - uint8_t oplock_level; - uint32_t create_action; - NTTIME creation_time; - NTTIME last_access_time; - NTTIME last_write_time; - NTTIME change_time; - uint64_t allocation_size; - uint64_t end_of_file; - uint32_t file_attributes; uint64_t fid_persistent; uint64_t fid_volatile; + struct smb2_create_returns cr; struct smb2_create_blobs blobs; }; @@ -70,6 +62,7 @@ struct tevent_req *smb2cli_create_send( size_t blobs_offset; uint8_t *dyn; size_t dyn_len; + size_t max_dyn_len; req = tevent_req_create(mem_ctx, &state, struct smb2cli_create_state); @@ -137,13 +130,23 @@ struct tevent_req *smb2cli_create_send( data_blob_free(&blob); } + /* + * We use max_dyn_len = 0 + * as we don't explicitly ask for any output length. + * + * But it's still possible for the server to return + * large create blobs. + */ + max_dyn_len = 0; + subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_CREATE, 0, 0, /* flags */ timeout_msec, tcon, session, state->fixed, sizeof(state->fixed), - dyn, dyn_len); + dyn, dyn_len, + max_dyn_len); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } @@ -179,15 +182,15 @@ static void smb2cli_create_done(struct tevent_req *subreq) body = (uint8_t *)iov[1].iov_base; - state->oplock_level = CVAL(body, 2); - state->create_action = IVAL(body, 4); - state->creation_time = BVAL(body, 8); - state->last_access_time = BVAL(body, 16); - state->last_write_time = BVAL(body, 24); - state->change_time = BVAL(body, 32); - state->allocation_size = BVAL(body, 40); - state->end_of_file = BVAL(body, 48); - state->file_attributes = IVAL(body, 56); + state->cr.oplock_level = CVAL(body, 2); + state->cr.create_action = IVAL(body, 4); + state->cr.creation_time = BVAL(body, 8); + state->cr.last_access_time = BVAL(body, 16); + state->cr.last_write_time = BVAL(body, 24); + state->cr.change_time = BVAL(body, 32); + state->cr.allocation_size = BVAL(body, 40); + state->cr.end_of_file = BVAL(body, 48); + state->cr.file_attributes = IVAL(body, 56); state->fid_persistent = BVAL(body, 64); state->fid_volatile = BVAL(body, 72); @@ -213,7 +216,8 @@ static void smb2cli_create_done(struct tevent_req *subreq) NTSTATUS smb2cli_create_recv(struct tevent_req *req, uint64_t *fid_persistent, - uint64_t *fid_volatile) + uint64_t *fid_volatile, + struct smb2_create_returns *cr) { struct smb2cli_create_state *state = tevent_req_data(req, @@ -225,6 +229,9 @@ NTSTATUS smb2cli_create_recv(struct tevent_req *req, } *fid_persistent = state->fid_persistent; *fid_volatile = state->fid_volatile; + if (cr) { + *cr = state->cr; + } return NT_STATUS_OK; } @@ -242,7 +249,8 @@ NTSTATUS smb2cli_create(struct smbXcli_conn *conn, uint32_t create_options, struct smb2_create_blobs *blobs, uint64_t *fid_persistent, - uint64_t *fid_volatile) + uint64_t *fid_volatile, + struct smb2_create_returns *cr) { TALLOC_CTX *frame = talloc_stackframe(); struct tevent_context *ev; @@ -273,7 +281,7 @@ NTSTATUS smb2cli_create(struct smbXcli_conn *conn, if (!tevent_req_poll_ntstatus(req, ev, &status)) { goto fail; } - status = smb2cli_create_recv(req, fid_persistent, fid_volatile); + status = smb2cli_create_recv(req, fid_persistent, fid_volatile, cr); fail: TALLOC_FREE(frame); return status; diff --git a/libcli/smb/smb2cli_echo.c b/libcli/smb/smb2cli_echo.c index 29cbf26..39c592c 100644 --- a/libcli/smb/smb2cli_echo.c +++ b/libcli/smb/smb2cli_echo.c @@ -53,7 +53,8 @@ struct tevent_req *smb2cli_echo_send(TALLOC_CTX *mem_ctx, NULL, /* tcon */ NULL, /* session */ state->fixed, sizeof(state->fixed), - NULL, 0); + NULL, 0, /* dyn* */ + 0); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_flush.c b/libcli/smb/smb2cli_flush.c index 0ca2699..f014720 100644 --- a/libcli/smb/smb2cli_flush.c +++ b/libcli/smb/smb2cli_flush.c @@ -58,7 +58,8 @@ struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - NULL, 0); + NULL, 0, /* dyn* */ + 0); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_ioctl.c b/libcli/smb/smb2cli_ioctl.c index 15a990c..8de7635 100644 --- a/libcli/smb/smb2cli_ioctl.c +++ b/libcli/smb/smb2cli_ioctl.c @@ -61,6 +61,8 @@ struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx, uint32_t output_buffer_offset = 0; uint32_t output_buffer_length = 0; uint32_t pad_length = 0; + uint64_t tmp64; + uint32_t max_dyn_len = 0; req = tevent_req_create(mem_ctx, &state, struct smb2cli_ioctl_state); @@ -70,6 +72,14 @@ struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx, state->max_input_length = in_max_input_length; state->max_output_length = in_max_output_length; + tmp64 = in_max_input_length; + tmp64 += in_max_output_length; + if (tmp64 > UINT32_MAX) { + max_dyn_len = UINT32_MAX; + } else { + max_dyn_len = tmp64; + } + if (in_input_buffer) { input_buffer_offset = SMB2_HDR_BODY+0x38; input_buffer_length = in_input_buffer->length; @@ -139,7 +149,8 @@ struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - dyn, dyn_len); + dyn, dyn_len, + max_dyn_len); if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_query_directory.c b/libcli/smb/smb2cli_query_directory.c index 32f5bee..bccc529 100644 --- a/libcli/smb/smb2cli_query_directory.c +++ b/libcli/smb/smb2cli_query_directory.c @@ -93,7 +93,8 @@ struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - dyn, dyn_len); + dyn, dyn_len, + outbuf_len); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_query_info.c b/libcli/smb/smb2cli_query_info.c index 9ec16b5..454f25a 100644 --- a/libcli/smb/smb2cli_query_info.c +++ b/libcli/smb/smb2cli_query_info.c @@ -96,7 +96,8 @@ struct tevent_req *smb2cli_query_info_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - dyn, dyn_len); + dyn, dyn_len, + in_max_output_length); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_read.c b/libcli/smb/smb2cli_read.c index 0adb403..4a31622 100644 --- a/libcli/smb/smb2cli_read.c +++ b/libcli/smb/smb2cli_read.c @@ -72,7 +72,8 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - state->dyn_pad, sizeof(state->dyn_pad)); + state->dyn_pad, sizeof(state->dyn_pad), + length); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_session.c b/libcli/smb/smb2cli_session.c index 537c171..4418a0d 100644 --- a/libcli/smb/smb2cli_session.c +++ b/libcli/smb/smb2cli_session.c @@ -102,7 +102,8 @@ struct tevent_req *smb2cli_session_setup_send(TALLOC_CTX *mem_ctx, NULL, /* tcon */ session, state->fixed, sizeof(state->fixed), - dyn, dyn_len); + dyn, dyn_len, + UINT16_MAX); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } @@ -258,7 +259,8 @@ struct tevent_req *smb2cli_logoff_send(TALLOC_CTX *mem_ctx, NULL, /* tcon */ session, state->fixed, sizeof(state->fixed), - NULL, 0); + NULL, 0, /* dyn* */ + 0); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_set_info.c b/libcli/smb/smb2cli_set_info.c index d5c7e58..6871370 100644 --- a/libcli/smb/smb2cli_set_info.c +++ b/libcli/smb/smb2cli_set_info.c @@ -88,7 +88,8 @@ struct tevent_req *smb2cli_set_info_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - dyn, dyn_len); + dyn, dyn_len, + 0); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } diff --git a/libcli/smb/smb2cli_write.c b/libcli/smb/smb2cli_write.c index 8e65460..6d0a0aa 100644 --- a/libcli/smb/smb2cli_write.c +++ b/libcli/smb/smb2cli_write.c @@ -26,6 +26,7 @@ struct smb2cli_write_state { uint8_t fixed[48]; uint8_t dyn_pad[1]; + uint32_t written; }; static void smb2cli_write_done(struct tevent_req *subreq); @@ -81,7 +82,8 @@ struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx, tcon, session, state->fixed, sizeof(state->fixed), - dyn, dyn_len); + dyn, dyn_len, + 0); /* max_dyn_len */ if (tevent_req_nomem(subreq, req)) { return tevent_req_post(req, ev); } @@ -94,7 +96,11 @@ static void smb2cli_write_done(struct tevent_req *subreq) struct tevent_req *req = tevent_req_callback_data(subreq, struct tevent_req); + struct smb2cli_write_state *state = + tevent_req_data(req, + struct smb2cli_write_state); NTSTATUS status; + struct iovec *iov; static const struct smb2cli_req_expected_response expected[] = { { .status = NT_STATUS_OK, @@ -102,18 +108,32 @@ static void smb2cli_write_done(struct tevent_req *subreq) } }; - status = smb2cli_req_recv(subreq, NULL, NULL, + status = smb2cli_req_recv(subreq, state, &iov, expected, ARRAY_SIZE(expected)); TALLOC_FREE(subreq); if (tevent_req_nterror(req, status)) { return; } + state->written = IVAL(iov[1].iov_base, 4); tevent_req_done(req); } -NTSTATUS smb2cli_write_recv(struct tevent_req *req) +NTSTATUS smb2cli_write_recv(struct tevent_req *req, uint32_t *written) { - return tevent_req_simple_recv_ntstatus(req); + struct smb2cli_write_state *state = + tevent_req_data(req, + struct smb2cli_write_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + if (written) { + *written = state->written; + } + tevent_req_received(req); + return NT_STATUS_OK; } NTSTATUS smb2cli_write(struct smbXcli_conn *conn, @@ -126,7 +146,8 @@ NTSTATUS smb2cli_write(struct smbXcli_conn *conn, uint64_t fid_volatile, uint32_t remaining_bytes, uint32_t flags, - const uint8_t *data) + const uint8_t *data, + uint32_t *written) { TALLOC_CTX *frame = talloc_stackframe(); struct tevent_context *ev; @@ -155,7 +176,7 @@ NTSTATUS smb2cli_write(struct smbXcli_conn *conn, if (!tevent_req_poll_ntstatus(req, ev, &status)) { goto fail; } - status = smb2cli_write_recv(req); + status = smb2cli_write_recv(req, written); fail: TALLOC_FREE(frame); return status; diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c index 7397f83..1176bb8 100644 --- a/libcli/smb/smbXcli_base.c +++ b/libcli/smb/smbXcli_base.c @@ -246,6 +246,11 @@ struct smbXcli_req_state { */ struct iovec *recv_iov; + /* + * the expected max for the response dyn_len + */ + uint32_t max_dyn_len; + uint16_t credit_charge; bool should_sign; @@ -590,6 +595,23 @@ uint32_t smb1cli_conn_max_xmit(struct smbXcli_conn *conn) return conn->smb1.max_xmit; } +bool smb1cli_conn_req_possible(struct smbXcli_conn *conn) +{ + size_t pending; + uint16_t possible = conn->smb1.server.max_mux; + + pending = tevent_queue_length(conn->outgoing); + if (pending >= possible) { + return false; + } + pending += talloc_array_length(conn->pending); + if (pending >= possible) { + return false; + } + + return true; +} + uint32_t smb1cli_conn_server_session_key(struct smbXcli_conn *conn) { return conn->smb1.server.session_key; @@ -2431,6 +2453,28 @@ bool smbXcli_conn_has_async_calls(struct smbXcli_conn *conn) || (talloc_array_length(conn->pending) != 0)); } +bool smb2cli_conn_req_possible(struct smbXcli_conn *conn, uint32_t *max_dyn_len) +{ + uint16_t credits = 1; + + if (conn->smb2.cur_credits == 0) { + if (max_dyn_len != NULL) { + *max_dyn_len = 0; + } + return false; + } + + if (conn->smb2.server.capabilities & SMB2_CAP_LARGE_MTU) { + credits = conn->smb2.cur_credits; + } + + if (max_dyn_len != NULL) { + *max_dyn_len = credits * 65536; + } + + return true; +} + uint32_t smb2cli_conn_server_capabilities(struct smbXcli_conn *conn) { return conn->smb2.server.capabilities; @@ -2490,7 +2534,7 @@ static bool smb2cli_req_cancel(struct tevent_req *req) 0, /* timeout */ tcon, session, fixed, fixed_len, - NULL, 0); + NULL, 0, 0); if (subreq == NULL) { return false; } @@ -2539,7 +2583,8 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx, const uint8_t *fixed, uint16_t fixed_len, const uint8_t *dyn, - uint32_t dyn_len) + uint32_t dyn_len, + uint32_t max_dyn_len) { struct tevent_req *req; struct smbXcli_req_state *state; @@ -2612,6 +2657,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx, state->smb2.fixed_len = fixed_len; state->smb2.dyn = dyn; state->smb2.dyn_len = dyn_len; + state->smb2.max_dyn_len = max_dyn_len; if (state->smb2.should_encrypt) { SIVAL(state->smb2.transform, SMB2_TF_PROTOCOL_ID, SMB2_TF_MAGIC); @@ -2788,7 +2834,12 @@ NTSTATUS smb2cli_req_compound_submit(struct tevent_req **reqs, } if (state->conn->smb2.server.capabilities & SMB2_CAP_LARGE_MTU) { - charge = (MAX(state->smb2.dyn_len, 1) - 1)/ 65536 + 1; + uint32_t max_dyn_len = 1; + + max_dyn_len = MAX(max_dyn_len, state->smb2.dyn_len); + max_dyn_len = MAX(max_dyn_len, state->smb2.max_dyn_len); + + charge = (max_dyn_len - 1)/ 65536 + 1; } else { -- Samba Shared Repository