[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Thu Sep 15 19:44:01 UTC 2022
The branch, master has been updated
via b4455f04879 s3: libsmb: In cli_posix_open_internal_send() (SMBtrans2:TRANSACT2_SETPATHINFO) check for DFS pathname.
via fa7e6899b3b s3: libsmb: In cli_qpathinfo_send() (SMBtrans2:TRANSACT2_QPATHINFO) check for DFS pathname.
via adc4a1b290a s3: libsmb: In cli_set_ea_path() (SMBtrans2:TRANSACT2_SETPATHINFO) check for DFS pathname.
via 5c083e8bc3a s3: libsmb: In cli_ctemp_send() (SMBctemp) check for DFS pathname.
via 6a82167f11f s3: libsmb: In cli_chkpath_send() (SMBcheckpath) check for DFS pathname.
via a53c049c4de s3: libsmb: In cli_setatr_send() (SMBsetatr) check for DFS pathname.
via 75339aec0ee s3: libsmb: In cli_getatr_send() (SMBgetatr) check for DFS pathname.
via b58cee42512 s3: libsmb: In cli_openx_create() (SMBopenX) check for DFS pathname.
via ab125722642 s3: libsmb: In cli_nttrans_create_send() (SMBnttrans:NT_TRANSACT_CREATE) check for DFS pathname.
via 198869afecd s3: libsmb: In cli_ntcreate1_send() (SMBntcreateX) check for DFS pathname.
via 8561eaa02d9 s3: libsmb: In cli_rmdir_send() (SMBrmdir) check for DFS pathname.
via 47cf519e98f s3: libsmb: In cli_mkdir_send() (SMBmkdir) check for DFS pathname.
via e2efea7d1f2 s3: libsmb: In cli_unlink_send() (SMBunlink) check for DFS pathname.
via 73a6e2b14a1 s3: libsmb: In cli_ntrename_internal_send() (SMBntrename) check for DFS dst pathname.
via f1765c9c7be s3: libsmb: In cli_ntrename_internal_send() (SMBntrename) check for DFS source pathname.
via 44bf2bc89a4 s3: libsmb: In cli_cifs_rename_send() (SMBmv) check for DFS dst pathname.
via 4da3c724d5b s3: libsmb: In cli_cifs_rename_send() (SMBmv) check for DFS source pathname.
via 2d28696efe6 s3: libsmb: Make cli_setpathinfo_send() (SMBtrans2: TRANSACT2_SETPATHINFO) DFS path aware.
via f34fad61fdc s3: smbcacls: Now cli_resolve_path() and cli_list() can handle DFS names we no longer need local_cli_resolve_path().
via 3c2a31b4384 s3: libsmb: Fix cli_resolve_path() to cope with DFS paths passed in as well as local paths.
via d9f0d924795 s3: libsmb: Fix SMB1 cli_list_old_send() to cope with DFS paths.
via 4a9458d03dd s3: libsmb: Fix SMB1 cli_list_trans_send() (SMBtrans2:TRANSACT2_FINDFIRST) to cope with DFS paths.
via c98d165e517 s3: libsmb: Add smb1_dfs_share_path() to convert a name into a DFS path if needed.
via dd9cdfb3b14 s3: libsmb: For SMB2 opens on a DFS share, convert to a DFS path if not already done.
via 26b4a6951b6 s3: libsmb: Add cli_dfs_is_already_full_path() function.
via 070b73e3f96 s3: libsmb: In cli_list_old_send(), push state->mask into the packet, not just mask.
via ad97a97bd80 s3: libsmb: Make cli_state_save_tcon()/cli_state_restore_tcon() static.
via 4e3ea1b2e72 s3: smbcacls: In cli_lsa_lookup_domain_sid(), replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via fddade459f2 s3: utils: In show_userlist() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via d116a079e99 s3: torture: In run_tcon_test() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via cf02ed2f605 s3: torture: In run_smb2_basic(), replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via fcf090279e2 s3: libsmb: In cli_check_msdfs_proxy() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via 83dab4238cd s3: libsmb: In cli_lsa_lookup_name() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via 73fde1fbbf0 s3: libsmb: In cli_lsa_lookup_sid() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via c3c71649850 s3: libsmb: Add pair cli_state_save_tcon_share()/cli_state_restore_tcon_share().
via dfd7c6ca784 s3: libsmb: Cleanup - remove unused fname_src parameter from cli_dfs_target_check().
via c7749103b22 s3: libsmb: Add missing memory allocation fail check in cli_openx_create().
via a213a371aeb s3: libsmb: Add missing memory allocation fail checks in cli_ntcreate1_send().
from 95bd776d2a3 s3: smbtorture3: Add test_smb1_qpathinfo() DFS test to run_smb1_dfs_operations().
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit b4455f04879d39aefc4d4e39e6611c54be00e62d
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 9 10:29:30 2022 -0700
s3: libsmb: In cli_posix_open_internal_send() (SMBtrans2:TRANSACT2_SETPATHINFO) check for DFS pathname.
See smbtorture3: SMB1-DFS-PATHS: test_smb1_setpathinfo_XXXX()
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Thu Sep 15 19:44:00 UTC 2022 on sn-devel-184
commit fa7e6899b3ba5d672a805220021268e1d3165015
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 9 09:40:12 2022 -0700
s3: libsmb: In cli_qpathinfo_send() (SMBtrans2:TRANSACT2_QPATHINFO) check for DFS pathname.
See smbtorture3: SMB1-DFS-PATHS: test_smb1_qpathinfo()
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit adc4a1b290a96221b8198a030977760d21aebae0
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 8 16:21:20 2022 -0700
s3: libsmb: In cli_set_ea_path() (SMBtrans2:TRANSACT2_SETPATHINFO) check for DFS pathname.
See smbtorture3: SMB1-DFS-PATHS: test_smb1_setpathinfo_XXXX()
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 5c083e8bc3a15b6cdab906dfbaefe9fa2a3692fe
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 8 14:28:41 2022 -0700
s3: libsmb: In cli_ctemp_send() (SMBctemp) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_ctemp() shows
SMBctemp uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 6a82167f11fa499bac6176a5dfd2f9a423721058
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 8 12:25:49 2022 -0700
s3: libsmb: In cli_chkpath_send() (SMBcheckpath) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_chkpath() shows
SMBcheckpath uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit a53c049c4de8f737e55f021b84060f2ed5fc57ed
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 8 11:53:33 2022 -0700
s3: libsmb: In cli_setatr_send() (SMBsetatr) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_setatr() shows
SMBsetatr uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 75339aec0ee963c8f7605aaf5016bacdcaa23b99
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 8 09:50:56 2022 -0700
s3: libsmb: In cli_getatr_send() (SMBgetatr) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_getatr() shows
SMBgetatr uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit b58cee42512320f3b5ee1b6f4ae41eaf597690ef
Author: Jeremy Allison <jra at samba.org>
Date: Wed Sep 7 12:52:42 2022 -0700
s3: libsmb: In cli_openx_create() (SMBopenX) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_openx() shows
SMBopenX uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit ab1257226420c98621aec4fa0737882ae0291c94
Author: Jeremy Allison <jra at samba.org>
Date: Wed Sep 7 12:05:53 2022 -0700
s3: libsmb: In cli_nttrans_create_send() (SMBnttrans:NT_TRANSACT_CREATE) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_nttrans_create() shows
SMBnttrans:NT_TRANSACT_CREATE uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 198869afecd4c5bd87e8325ba5530736a39c41ab
Author: Jeremy Allison <jra at samba.org>
Date: Wed Sep 7 11:26:46 2022 -0700
s3: libsmb: In cli_ntcreate1_send() (SMBntcreateX) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_ntcreatex() shows
SMBntcreateX uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 8561eaa02d9810b337378ee3ed448570d20496b8
Author: Jeremy Allison <jra at samba.org>
Date: Wed Sep 7 10:47:37 2022 -0700
s3: libsmb: In cli_rmdir_send() (SMBrmdir) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_rmdir() shows
SMBrmdir uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 47cf519e98f937cf21cc3c8c62e38efa7010f091
Author: Jeremy Allison <jra at samba.org>
Date: Wed Sep 7 10:45:01 2022 -0700
s3: libsmb: In cli_mkdir_send() (SMBmkdir) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_mkdir() shows
SMBmkdir uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit e2efea7d1f2b635057b6a25b1e086645eb2f38be
Author: Jeremy Allison <jra at samba.org>
Date: Tue Sep 6 17:26:58 2022 -0700
s3: libsmb: In cli_unlink_send() (SMBunlink) check for DFS pathname.
smbtorture3: SMB1-DFS-OPERATIONS: test_smb1_unlink() shows
SMBunlink uses DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 73a6e2b14a1cfbfd7f3572eddaf4d037bee5b3f3
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 13:18:06 2022 -0700
s3: libsmb: In cli_ntrename_internal_send() (SMBntrename) check for DFS dst pathname.
See smbtorture3: SMB1-DFS-PATHS: test_smb1_ntrename_rename().
and smbtorture3: SMB1-DFS-PATHS: test_smb1_ntrename_hardlink().
Remove the old code that stripped a DFS name from the
destination filename, and go through smb1_dfs_share_path()
as we did for fname_src in the last commit.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit f1765c9c7be95b8aacd5275a0c502be8c1afcd58
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 13:12:51 2022 -0700
s3: libsmb: In cli_ntrename_internal_send() (SMBntrename) check for DFS source pathname.
smbtorture3: SMB1-DFS-PATHS: test_smb1_ntrename_rename() shows
SMBntrename uses DFS for src and dst.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 44bf2bc89a47ead4c7efb77ffa34017dfb9220dc
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 12:40:19 2022 -0700
s3: libsmb: In cli_cifs_rename_send() (SMBmv) check for DFS dst pathname.
See smbtorture3: SMB1-DFS-PATHS: test_smb1_mv().
Remove the old code that stripped a DFS name from the
destination filename, and go through smb1_dfs_share_path()
as we did for fname_src in the last commit.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 4da3c724d5b3a60cd4af83b0a301b96a0d2ee945
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 12:33:48 2022 -0700
s3: libsmb: In cli_cifs_rename_send() (SMBmv) check for DFS source pathname.
smbtorture3: SMB1-DFS-PATHS: test_smb1_mv() shows
SMBmv uses DFS for src and dst.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 2d28696efe66c49a969b9de12e2f1a143e1a6d8e
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 12:27:36 2022 -0700
s3: libsmb: Make cli_setpathinfo_send() (SMBtrans2: TRANSACT2_SETPATHINFO) DFS path aware.
See smbtorture3: SMB1-DFS-PATHS: test_smb1_setpathinfo_XXXX()
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit f34fad61fdc28bf9d35a8d5d426b48d5f0c083b0
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 11:46:08 2022 -0700
s3: smbcacls: Now cli_resolve_path() and cli_list() can handle DFS names we no longer need local_cli_resolve_path().
Remove local_cli_resolve_path(). No more special treatment for DFS names in smbcacls.
Signed-off-by: Jeremy Allison <jra at samba.org>
Signed-off-by: Noel Power <noel.power at suse.com>
commit 3c2a31b43843a31da727b7d4350a8d969a1c4edd
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 11:44:47 2022 -0700
s3: libsmb: Fix cli_resolve_path() to cope with DFS paths passed in as well as local paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit d9f0d924795b199c416f72cc1e844e987efed8dd
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 1 16:12:35 2022 -0700
s3: libsmb: Fix SMB1 cli_list_old_send() to cope with DFS paths.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 4a9458d03dd1559c67f3ad9210bfce7af6192c61
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 1 16:10:49 2022 -0700
s3: libsmb: Fix SMB1 cli_list_trans_send() (SMBtrans2:TRANSACT2_FINDFIRST) to cope with DFS paths.
See smbtorture3: SMB1-DFS-SEARCH-PATHS: test_smb1_findfirst_path
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit c98d165e517c9bccb056d22b82ed5a2d591e0483
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 1 16:07:10 2022 -0700
s3: libsmb: Add smb1_dfs_share_path() to convert a name into a DFS path if needed.
Not yet used.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit dd9cdfb3b1488a5f262767089d456ae9269f72f0
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 1 15:32:40 2022 -0700
s3: libsmb: For SMB2 opens on a DFS share, convert to a DFS path if not already done.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 26b4a6951b6ae2a8ba2341d64fa888fe52f6463a
Author: Jeremy Allison <jra at samba.org>
Date: Fri Aug 19 14:59:04 2022 -0700
s3: libsmb: Add cli_dfs_is_already_full_path() function.
Returns true if it's already a fully qualified DFS path.
Not yet used.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 070b73e3f96c46bb4a96a8149c4c77ab3080a946
Author: Jeremy Allison <jra at samba.org>
Date: Thu Sep 1 16:07:34 2022 -0700
s3: libsmb: In cli_list_old_send(), push state->mask into the packet, not just mask.
This doesn't matter right now, but it will when I
add DFS path awareness to cli_list().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit ad97a97bd80f22350e7a5014a0a5d251c5e2e57a
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:40:55 2022 -0700
s3: libsmb: Make cli_state_save_tcon()/cli_state_restore_tcon() static.
There are no external callers.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 4e3ea1b2e723f1de3225112311e5fe38fa69683f
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:37:48 2022 -0700
s3: smbcacls: In cli_lsa_lookup_domain_sid(), replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
There are now no more external users of cli_state_save_tcon()/cli_state_restore_tcon()
so we can make them static.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit fddade459f2512709cf0e2e4b9b45de540f4e29f
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:34:43 2022 -0700
s3: utils: In show_userlist() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit d116a079e99227140292d020318d381985c350b0
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:32:46 2022 -0700
s3: torture: In run_tcon_test() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
Also fix a comment in run_uid_regression_test().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit cf02ed2f6054325dfbcf3d98ba1b9f5d454b100e
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:30:14 2022 -0700
s3: torture: In run_smb2_basic(), replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit fcf090279e29ce72a6aee2b6059b168f7a479d91
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:28:21 2022 -0700
s3: libsmb: In cli_check_msdfs_proxy() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 83dab4238cd12592d84dd5898b25463d58fb546f
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:25:40 2022 -0700
s3: libsmb: In cli_lsa_lookup_name() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit 73fde1fbbf0fe569c49bfdcd49bc5efe31c7d891
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:18:16 2022 -0700
s3: libsmb: In cli_lsa_lookup_sid() replace cli_state_save_tcon()/cli_state_restore_tcon() with cli_state_save_tcon_share()/cli_state_restore_tcon_share().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit c3c716498502e5f1a833a469e0a4936a9668338e
Author: Jeremy Allison <jra at samba.org>
Date: Tue Aug 23 17:13:58 2022 -0700
s3: libsmb: Add pair cli_state_save_tcon_share()/cli_state_restore_tcon_share().
Wraps cli_state_save_tcon()//cli_state_restore_tcon() but
also returns cli->sharename.
We are going to replace all uses of cli_state_save_tcon()/cli_state_restore_tcon()
so we also save/restore the cli->share for DFS purposes.
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviwed-by: Noel Power <npower at samba.org>
commit dfd7c6ca784d3bfd79aa1c238b22e3e9a778334c
Author: Jeremy Allison <jra at samba.org>
Date: Fri Sep 2 11:00:09 2022 -0700
s3: libsmb: Cleanup - remove unused fname_src parameter from cli_dfs_target_check().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit c7749103b22f83f7193267e9593ae6610c04dedf
Author: Jeremy Allison <jra at samba.org>
Date: Wed Sep 7 12:50:25 2022 -0700
s3: libsmb: Add missing memory allocation fail check in cli_openx_create().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
commit a213a371aeb2fae4df0f41e85faca2cfd38f6447
Author: Jeremy Allison <jra at samba.org>
Date: Wed Sep 7 11:12:08 2022 -0700
s3: libsmb: Add missing memory allocation fail checks in cli_ntcreate1_send().
Signed-off-by: Jeremy Allison <jra at samba.org>
Reviewed-by: Noel Power <npower at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/lib/util_sd.c | 18 +--
source3/libsmb/cli_smb2_fnum.c | 42 +++++-
source3/libsmb/clidfs.c | 124 +++++++++++++++--
source3/libsmb/clientgen.c | 28 +++-
source3/libsmb/clifile.c | 308 ++++++++++++++++++++++++++++++++---------
source3/libsmb/clilist.c | 15 +-
source3/libsmb/proto.h | 13 +-
source3/torture/test_smb2.c | 8 +-
source3/torture/torture.c | 16 +--
source3/utils/net_rpc.c | 10 +-
source3/utils/smbcacls.c | 82 +----------
11 files changed, 475 insertions(+), 189 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/lib/util_sd.c b/source3/lib/util_sd.c
index 2141eaf49ac..a4288a46f3d 100644
--- a/source3/lib/util_sd.c
+++ b/source3/lib/util_sd.c
@@ -87,6 +87,7 @@ static NTSTATUS cli_lsa_lookup_sid(struct cli_state *cli,
char **domain, char **name)
{
struct smbXcli_tcon *orig_tcon = NULL;
+ char *orig_share = NULL;
struct rpc_pipe_client *p = NULL;
struct policy_handle handle;
NTSTATUS status;
@@ -96,11 +97,7 @@ static NTSTATUS cli_lsa_lookup_sid(struct cli_state *cli,
char **names;
if (cli_state_has_tcon(cli)) {
- orig_tcon = cli_state_save_tcon(cli);
- if (orig_tcon == NULL) {
- status = NT_STATUS_NO_MEMORY;
- goto tcon_fail;
- }
+ cli_state_save_tcon_share(cli, &orig_tcon, &orig_share);
}
status = cli_tree_connect(cli, "IPC$", "?????", NULL);
@@ -135,7 +132,7 @@ static NTSTATUS cli_lsa_lookup_sid(struct cli_state *cli,
TALLOC_FREE(p);
cli_tdis(cli);
tcon_fail:
- cli_state_restore_tcon(cli, orig_tcon);
+ cli_state_restore_tcon_share(cli, orig_tcon, orig_share);
TALLOC_FREE(frame);
return status;
}
@@ -176,6 +173,7 @@ static NTSTATUS cli_lsa_lookup_name(struct cli_state *cli,
struct dom_sid *sid)
{
struct smbXcli_tcon *orig_tcon = NULL;
+ char *orig_share = NULL;
struct rpc_pipe_client *p = NULL;
struct policy_handle handle;
NTSTATUS status;
@@ -184,11 +182,7 @@ static NTSTATUS cli_lsa_lookup_name(struct cli_state *cli,
enum lsa_SidType *types;
if (cli_state_has_tcon(cli)) {
- orig_tcon = cli_state_save_tcon(cli);
- if (orig_tcon == NULL) {
- status = NT_STATUS_NO_MEMORY;
- goto tcon_fail;
- }
+ cli_state_save_tcon_share(cli, &orig_tcon, &orig_share);
}
status = cli_tree_connect(cli, "IPC$", "?????", NULL);
@@ -222,7 +216,7 @@ static NTSTATUS cli_lsa_lookup_name(struct cli_state *cli,
TALLOC_FREE(p);
cli_tdis(cli);
tcon_fail:
- cli_state_restore_tcon(cli, orig_tcon);
+ cli_state_restore_tcon_share(cli, orig_tcon, orig_share);
TALLOC_FREE(frame);
return status;
}
diff --git a/source3/libsmb/cli_smb2_fnum.c b/source3/libsmb/cli_smb2_fnum.c
index 1b8819cc6f2..bd3d705a641 100644
--- a/source3/libsmb/cli_smb2_fnum.c
+++ b/source3/libsmb/cli_smb2_fnum.c
@@ -153,6 +153,42 @@ static uint8_t flags_to_smb2_oplock(uint32_t create_flags)
return SMB2_OPLOCK_LEVEL_NONE;
}
+/***************************************************************
+ If we're on a DFS share, ensure we convert to a full DFS path
+ if this hasn't already been done.
+***************************************************************/
+
+static const char *smb2_dfs_share_path(TALLOC_CTX *ctx,
+ struct cli_state *cli,
+ const char *path)
+{
+ bool is_dfs = smbXcli_conn_dfs_supported(cli->conn) &&
+ smbXcli_tcon_is_dfs_share(cli->smb2.tcon);
+ bool is_already_dfs_path = false;
+
+ if (!is_dfs) {
+ return path;
+ }
+ is_already_dfs_path = cli_dfs_is_already_full_path(cli, path);
+ if (is_already_dfs_path) {
+ return path;
+ }
+ if (path[0] == '\0') {
+ return talloc_asprintf(ctx,
+ "%s\\%s",
+ smbXcli_conn_remote_name(cli->conn),
+ cli->share);
+ }
+ while (*path == '\\') {
+ path++;
+ }
+ return talloc_asprintf(ctx,
+ "%s\\%s\\%s",
+ smbXcli_conn_remote_name(cli->conn),
+ cli->share,
+ path);
+}
+
/***************************************************************
Small wrapper that allows SMB2 create to return a uint16_t fnum.
***************************************************************/
@@ -254,6 +290,11 @@ struct tevent_req *cli_smb2_create_fnum_send(
}
}
+ fname = smb2_dfs_share_path(state, cli, fname);
+ if (tevent_req_nomem(fname, req)) {
+ return tevent_req_post(req, ev);
+ }
+
/* SMB2 is pickier about pathnames. Ensure it doesn't
start in a '\' */
if (*fname == '\\') {
@@ -3213,7 +3254,6 @@ struct tevent_req *cli_smb2_rename_send(
*/
status = cli_dfs_target_check(state,
cli,
- fname_src,
fname_dst,
&fname_dst);
if (tevent_req_nterror(req, status)) {
diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c
index 1e73aa221dc..9982f97d43a 100644
--- a/source3/libsmb/clidfs.c
+++ b/source3/libsmb/clidfs.c
@@ -588,6 +588,46 @@ static char *cli_dfs_make_full_path(TALLOC_CTX *ctx,
dir);
}
+/********************************************************************
+ Check if a path has already been converted to DFS.
+********************************************************************/
+
+bool cli_dfs_is_already_full_path(struct cli_state *cli, const char *path)
+{
+ const char *server = smbXcli_conn_remote_name(cli->conn);
+ size_t server_len = strlen(server);
+ bool found_server = false;
+ const char *share = cli->share;
+ size_t share_len = strlen(share);
+ bool found_share = false;
+
+ if (!IS_DIRECTORY_SEP(path[0])) {
+ return false;
+ }
+ path++;
+ found_server = (strncasecmp_m(path, server, server_len) == 0);
+ if (!found_server) {
+ return false;
+ }
+ path += server_len;
+ if (!IS_DIRECTORY_SEP(path[0])) {
+ return false;
+ }
+ path++;
+ found_share = (strncasecmp_m(path, share, share_len) == 0);
+ if (!found_share) {
+ return false;
+ }
+ path += share_len;
+ if (path[0] == '\0') {
+ return true;
+ }
+ if (IS_DIRECTORY_SEP(path[0])) {
+ return true;
+ }
+ return false;
+}
+
/********************************************************************
Get the dfs referral link.
********************************************************************/
@@ -865,6 +905,7 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx,
struct smbXcli_tcon *target_tcon = NULL;
struct cli_dfs_path_split *dfs_refs = NULL;
bool ok;
+ bool is_already_dfs = false;
if ( !rootcli || !path || !targetcli ) {
return NT_STATUS_INVALID_PARAMETER;
@@ -889,6 +930,24 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx,
*targetcli = NULL;
+ is_already_dfs = cli_dfs_is_already_full_path(rootcli, path);
+ if (is_already_dfs) {
+ const char *localpath = NULL;
+ /*
+ * Given path is already converted to DFS.
+ * Convert to a local path so clean_path()
+ * can correctly strip any wildcards.
+ */
+ status = cli_dfs_target_check(ctx,
+ rootcli,
+ path,
+ &localpath);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+ path = localpath;
+ }
+
/* Send a trans2_query_path_info to check for a referral. */
cleanpath = clean_path(ctx, path);
@@ -1156,6 +1215,7 @@ bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
char *fullpath = NULL;
bool res;
struct smbXcli_tcon *orig_tcon = NULL;
+ char *orig_share = NULL;
char *newextrapath = NULL;
NTSTATUS status;
const char *remote_name;
@@ -1183,16 +1243,13 @@ bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
/* Store tcon state. */
if (cli_state_has_tcon(cli)) {
- orig_tcon = cli_state_save_tcon(cli);
- if (orig_tcon == NULL) {
- return false;
- }
+ cli_state_save_tcon_share(cli, &orig_tcon, &orig_share);
}
/* check for the referral */
if (!NT_STATUS_IS_OK(cli_tree_connect(cli, "IPC$", "IPC", NULL))) {
- cli_state_restore_tcon(cli, orig_tcon);
+ cli_state_restore_tcon_share(cli, orig_tcon, orig_share);
return false;
}
@@ -1211,7 +1268,9 @@ bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
* tcon so we don't leak it.
*/
cli_tdis(cli);
- cli_state_restore_tcon(cli, orig_tcon);
+ cli_state_restore_tcon_share(cli,
+ orig_tcon,
+ orig_share);
return false;
}
}
@@ -1223,7 +1282,7 @@ bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
status = cli_tdis(cli);
- cli_state_restore_tcon(cli, orig_tcon);
+ cli_state_restore_tcon_share(cli, orig_tcon, orig_share);
if (!NT_STATUS_IS_OK(status)) {
return false;
@@ -1261,7 +1320,6 @@ bool cli_check_msdfs_proxy(TALLOC_CTX *ctx,
NTSTATUS cli_dfs_target_check(TALLOC_CTX *mem_ctx,
struct cli_state *cli,
- const char *fname_src,
const char *fname_dst,
const char **fname_dst_out)
{
@@ -1308,3 +1366,53 @@ NTSTATUS cli_dfs_target_check(TALLOC_CTX *mem_ctx,
TALLOC_FREE(dfs_prefix);
return NT_STATUS_OK;
}
+
+/********************************************************************
+ Convert a pathname into a DFS path if it hasn't already been converted.
+ Always returns a talloc'ed path, makes it easy to pass const paths in.
+********************************************************************/
+
+char *smb1_dfs_share_path(TALLOC_CTX *ctx,
+ struct cli_state *cli,
+ const char *path)
+{
+ bool is_dfs = smbXcli_conn_dfs_supported(cli->conn) &&
+ smbXcli_tcon_is_dfs_share(cli->smb1.tcon);
+ bool is_already_dfs_path = false;
+ bool posix = (cli->requested_posix_capabilities &
+ CIFS_UNIX_POSIX_PATHNAMES_CAP);
+ char sepchar = (posix ? '/' : '\\');
+
+ if (!is_dfs) {
+ return talloc_strdup(ctx, path);
+ }
+ is_already_dfs_path = cli_dfs_is_already_full_path(cli, path);
+ if (is_already_dfs_path) {
+ return talloc_strdup(ctx, path);
+ }
+ /*
+ * We don't use cli_dfs_make_full_path() as,
+ * when given a null path, cli_dfs_make_full_path
+ * deliberately adds a trailing '\\' (this is by
+ * design to check for an existing DFS prefix match).
+ */
+ if (path[0] == '\0') {
+ return talloc_asprintf(ctx,
+ "%c%s%c%s",
+ sepchar,
+ smbXcli_conn_remote_name(cli->conn),
+ sepchar,
+ cli->share);
+ }
+ while (*path == sepchar) {
+ path++;
+ }
+ return talloc_asprintf(ctx,
+ "%c%s%c%s%c%s",
+ sepchar,
+ smbXcli_conn_remote_name(cli->conn),
+ sepchar,
+ cli->share,
+ sepchar,
+ path);
+}
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 5f0b9daf333..b34d9fec705 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -359,7 +359,7 @@ uint32_t cli_state_set_tid(struct cli_state *cli, uint32_t tid)
return ret;
}
-struct smbXcli_tcon *cli_state_save_tcon(struct cli_state *cli)
+static struct smbXcli_tcon *cli_state_save_tcon(struct cli_state *cli)
{
/*
* Note. This used to make a deep copy of either
@@ -394,7 +394,21 @@ struct smbXcli_tcon *cli_state_save_tcon(struct cli_state *cli)
return tcon_ret;
}
-void cli_state_restore_tcon(struct cli_state *cli, struct smbXcli_tcon *tcon)
+void cli_state_save_tcon_share(struct cli_state *cli,
+ struct smbXcli_tcon **_tcon_ret,
+ char **_sharename_ret)
+{
+ *_tcon_ret = cli_state_save_tcon(cli);
+ /*
+ * No talloc_copy as cli->share is already
+ * allocated off cli.
+ */
+ *_sharename_ret = cli->share;
+ cli->share = NULL;
+}
+
+static void cli_state_restore_tcon(struct cli_state *cli,
+ struct smbXcli_tcon *tcon)
{
if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) {
TALLOC_FREE(cli->smb2.tcon);
@@ -405,6 +419,16 @@ void cli_state_restore_tcon(struct cli_state *cli, struct smbXcli_tcon *tcon)
}
}
+void cli_state_restore_tcon_share(struct cli_state *cli,
+ struct smbXcli_tcon *tcon,
+ char *share)
+{
+ /* cli->share will have been replaced by a cli_tree_connect() call. */
+ TALLOC_FREE(cli->share);
+ cli->share = share;
+ cli_state_restore_tcon(cli, tcon);
+}
+
uint16_t cli_state_get_uid(struct cli_state *cli)
{
return smb1cli_session_current_id(cli->smb1.session);
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index 4cc9f231c37..1d1e6f03337 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -47,6 +47,7 @@ struct tevent_req *cli_setpathinfo_send(TALLOC_CTX *mem_ctx,
struct tevent_req *req, *subreq;
struct cli_setpathinfo_state *state;
uint16_t additional_flags2 = 0;
+ char *path_cp = NULL;
req = tevent_req_create(mem_ctx, &state,
struct cli_setpathinfo_state);
@@ -64,8 +65,16 @@ struct tevent_req *cli_setpathinfo_send(TALLOC_CTX *mem_ctx,
}
SSVAL(state->param, 0, level);
- state->param = trans2_bytes_push_str(
- state->param, smbXcli_conn_use_unicode(cli->conn), path, strlen(path)+1, NULL);
+ /* Check for DFS. */
+ path_cp = smb1_dfs_share_path(state, cli, path);
+ if (tevent_req_nomem(path_cp, req)) {
+ return tevent_req_post(req, ev);
+ }
+ state->param = trans2_bytes_push_str(state->param,
+ smbXcli_conn_use_unicode(cli->conn),
+ path_cp,
+ strlen(path_cp)+1,
+ NULL);
if (tevent_req_nomem(state->param, req)) {
return tevent_req_post(req, ev);
}
@@ -1240,7 +1249,6 @@ static struct tevent_req *cli_smb1_rename_send(TALLOC_CTX *mem_ctx,
*/
status = cli_dfs_target_check(state,
cli,
- fname_src,
fname_dst,
&fname_dst);
if (!NT_STATUS_IS_OK(status)) {
@@ -1324,7 +1332,8 @@ static struct tevent_req *cli_cifs_rename_send(TALLOC_CTX *mem_ctx,
uint8_t additional_flags = 0;
uint16_t additional_flags2 = 0;
uint8_t *bytes = NULL;
- NTSTATUS status;
+ char *fname_src_cp = NULL;
+ char *fname_dst_cp = NULL;
req = tevent_req_create(mem_ctx, &state, struct cli_cifs_rename_state);
if (req == NULL) {
@@ -1339,27 +1348,28 @@ static struct tevent_req *cli_cifs_rename_send(TALLOC_CTX *mem_ctx,
return tevent_req_post(req, ev);
}
- /*
- * Strip a MSDFS path from fname_dst if we were given one.
- */
- status = cli_dfs_target_check(state,
- cli,
- fname_src,
- fname_dst,
- &fname_dst);
- if (tevent_req_nterror(req, status)) {
- return tevent_req_post(req, ev);
- }
-
SSVAL(state->vwv+0, 0, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY);
bytes = talloc_array(state, uint8_t, 1);
if (tevent_req_nomem(bytes, req)) {
return tevent_req_post(req, ev);
}
+
+ /*
+ * SMBmv on a DFS share uses DFS names for src and dst.
+ * See smbtorture3: SMB1-DFS-PATHS: test_smb1_mv().
+ */
+
+ fname_src_cp = smb1_dfs_share_path(state, cli, fname_src);
+ if (tevent_req_nomem(fname_src_cp, req)) {
+ return tevent_req_post(req, ev);
+ }
bytes[0] = 4;
- bytes = smb_bytes_push_str(bytes, smbXcli_conn_use_unicode(cli->conn), fname_src,
- strlen(fname_src)+1, NULL);
+ bytes = smb_bytes_push_str(bytes,
+ smbXcli_conn_use_unicode(cli->conn),
+ fname_src_cp,
+ strlen(fname_src_cp)+1,
+ NULL);
if (tevent_req_nomem(bytes, req)) {
return tevent_req_post(req, ev);
}
@@ -1374,9 +1384,21 @@ static struct tevent_req *cli_cifs_rename_send(TALLOC_CTX *mem_ctx,
return tevent_req_post(req, ev);
}
+ /*
+ * SMBmv on a DFS share uses DFS names for src and dst.
+ * See smbtorture3: SMB1-DFS-PATHS: test_smb1_mv().
+ */
+
+ fname_dst_cp = smb1_dfs_share_path(state, cli, fname_dst);
+ if (tevent_req_nomem(fname_dst_cp, req)) {
+ return tevent_req_post(req, ev);
+ }
bytes[talloc_get_size(bytes)-1] = 4;
- bytes = smb_bytes_push_str(bytes, smbXcli_conn_use_unicode(cli->conn), fname_dst,
- strlen(fname_dst)+1, NULL);
+ bytes = smb_bytes_push_str(bytes,
+ smbXcli_conn_use_unicode(cli->conn),
+ fname_dst_cp,
+ strlen(fname_dst_cp)+1,
+ NULL);
if (tevent_req_nomem(bytes, req)) {
return tevent_req_post(req, ev);
}
@@ -1544,7 +1566,8 @@ static struct tevent_req *cli_ntrename_internal_send(TALLOC_CTX *mem_ctx,
uint8_t additional_flags = 0;
uint16_t additional_flags2 = 0;
uint8_t *bytes = NULL;
- NTSTATUS status;
+ char *fname_src_cp = NULL;
+ char *fname_dst_cp = NULL;
--
Samba Shared Repository
More information about the samba-cvs
mailing list