The branch, master has been updated via d9b02758d2e test: Fix a typo via 96c88431e06 tests: Fix a comment via 3859156fd84 smbd: Simplify smb_q_posix_symlink() via eb8968534dd libnet3: Fix Coverity ID 1034874 Resource leak via 644a44656c2 ntvfs: Fix Coverity ID 240792 Uninitialized scalar variable via ceb6112b6f8 ntvfs: Fix Coverity ID 240791 Uninitialized scalar variable via dcf69bc06c1 ntlm_auth: Fix Coverity ID 240750 Resource leak via 9900bb45550 ntlm_auth: Fix Coverity ID 240749 Resource leak via f6efb5a653c ntlm_auth: Fix Coverity ID 240748 Resource leak via 2e111267acb ntlm_auth: Fix Coverity ID 240747 Resource leak via 3e6f2e6cbc0 ntlm_auth: Fix Coverity ID 240743 Resource leak via 7f29caf599d libcli: Simplify debug_conditional_ace() via 5aa0cb0ea49 smbpasswd4: Simplify smbpasswd_sethexpwd() via ffc676dd875 smbd: Early talloc_free in an error case via 63f380058f4 libsmb: Save some .data bytes with a const array via 79d3b504ce2 tests: Use unix_mode_to_wire() in smb3unix tests via d4c13988c96 smbd: Simplify smbd_do_qfilepathinfo() from f86d1a35917 smbd: avoid a panic in close_directory()
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit d9b02758d2e7f5f5bd4515071ba275062b0d7215 Author: Volker Lendecke <v...@samba.org> Date: Thu Dec 28 13:39:40 2023 +0100 test: Fix a typo Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Ralph Böhme <s...@samba.org> Autobuild-Date(master): Tue Nov 19 19:24:16 UTC 2024 on atb-devel-224 commit 96c88431e0648ce0d29bb2809f2fcfd1704dae6a Author: Volker Lendecke <v...@samba.org> Date: Fri Dec 22 13:54:34 2023 +0100 tests: Fix a comment Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 3859156fd842c55ba2a8eb8d730174a9e66fb6b7 Author: Volker Lendecke <v...@samba.org> Date: Wed Nov 13 15:57:41 2024 +0100 smbd: Simplify smb_q_posix_symlink() Use the lcomp from filename_convert_dirfsp_rel() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit eb8968534dd53fa911f33ed500618787b23c6e14 Author: Volker Lendecke <v...@samba.org> Date: Fri Nov 15 11:17:42 2024 +0100 libnet3: Fix Coverity ID 1034874 Resource leak Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 644a44656c23f7a280f128e845271794b33d9f58 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 21:07:30 2024 +0100 ntvfs: Fix Coverity ID 240792 Uninitialized scalar variable Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit ceb6112b6f8b2b5f91393695a024326d93929b7a Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 21:06:09 2024 +0100 ntvfs: Fix Coverity ID 240791 Uninitialized scalar variable Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit dcf69bc06c1dcd94159621339b6987d4fb2a42e7 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 21:04:02 2024 +0100 ntlm_auth: Fix Coverity ID 240750 Resource leak Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 9900bb45550ece6010626cc502cf89a98a4e8f28 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 21:03:02 2024 +0100 ntlm_auth: Fix Coverity ID 240749 Resource leak Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit f6efb5a653cefe5053e54f708ab1e65b18cbec81 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 21:02:09 2024 +0100 ntlm_auth: Fix Coverity ID 240748 Resource leak Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 2e111267acbba8afc9aafda288fce90034d95e98 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 21:00:07 2024 +0100 ntlm_auth: Fix Coverity ID 240747 Resource leak Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 3e6f2e6cbc0f9553c06e1697cd1c5ee025d09c11 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 20:47:53 2024 +0100 ntlm_auth: Fix Coverity ID 240743 Resource leak Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 7f29caf599d2c657641c2e775c0dcb9db5f69919 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 20:52:03 2024 +0100 libcli: Simplify debug_conditional_ace() Move a variable declaration to its only user Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 5aa0cb0ea490a426dd9e8a581ee408d7f3a35340 Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 14 20:48:14 2024 +0100 smbpasswd4: Simplify smbpasswd_sethexpwd() Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit ffc676dd8754ba62bafb3cea83cd4946e6617710 Author: Volker Lendecke <v...@samba.org> Date: Fri Oct 4 13:39:18 2024 +0200 smbd: Early talloc_free in an error case Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 63f380058f419febb92c15319e3e40cf094ae0b9 Author: Volker Lendecke <v...@samba.org> Date: Mon Nov 18 12:20:19 2024 +0100 libsmb: Save some .data bytes with a const array Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit 79d3b504ce2cb85cdc368be13d0f42e79c18750a Author: Volker Lendecke <v...@samba.org> Date: Sat Sep 21 03:38:24 2024 +0200 tests: Use unix_mode_to_wire() in smb3unix tests Also add the file type. Not really relevant in create, IMHO it looks nicer in the code. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit d4c13988c963efe2d82222235791649f0510134f Author: Volker Lendecke <v...@samba.org> Date: Thu Nov 2 09:13:51 2023 +0100 smbd: Simplify smbd_do_qfilepathinfo() fdos_mode(fsp) unconditionally dereferences fsp, so we can get rid of checking for fsp!=NULL. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> ----------------------------------------------------------------------- Summary of changes: libcli/security/sddl_conditional_ace.c | 5 +-- libcli/smb/util.c | 2 +- python/samba/tests/smb3unix.py | 10 ++++-- source3/libnet/libnet_join.c | 3 +- source3/script/tests/test_shadow_copy.sh | 4 +-- source3/smbd/filename.c | 1 + source3/smbd/smb1_trans2.c | 54 +++++++++++++++----------------- source3/smbd/smb2_trans2.c | 17 ++-------- source3/utils/ntlm_auth.c | 3 +- source3/utils/ntlm_auth_diagnostics.c | 13 +++++--- source4/lib/samba3/smbpasswd.c | 6 +--- source4/ntvfs/ipc/ipc_rap.c | 4 +-- 12 files changed, 58 insertions(+), 64 deletions(-) Changeset truncated at 500 lines: diff --git a/libcli/security/sddl_conditional_ace.c b/libcli/security/sddl_conditional_ace.c index cd39e3c4c50..62323a300a0 100644 --- a/libcli/security/sddl_conditional_ace.c +++ b/libcli/security/sddl_conditional_ace.c @@ -445,7 +445,6 @@ char *debug_conditional_ace(TALLOC_CTX *mem_ctx, for (i = 0; i < program->length; i++) { struct ace_condition_token *tok = &program->tokens[i]; struct sddl_data s = sddl_strings[tok->type]; - char hex[21]; char *utf8 = NULL; int utf8_len; char type; @@ -535,7 +534,8 @@ char *debug_conditional_ace(TALLOC_CTX *mem_ctx, type = 'u'; break; - case CONDITIONAL_ACE_TOKEN_OCTET_STRING: + case CONDITIONAL_ACE_TOKEN_OCTET_STRING: { + char hex[21]; utf8_len = MIN(tok->data.bytes.length, 9); hex_encode_buf(hex, tok->data.bytes.data, utf8_len); @@ -544,6 +544,7 @@ char *debug_conditional_ace(TALLOC_CTX *mem_ctx, nom, utf8_len * 2, hex, utf8_len); type = 'o'; break; + } case CONDITIONAL_ACE_TOKEN_SID: utf8 = sddl_encode_sid(mem_ctx, &tok->data.sid.sid, diff --git a/libcli/smb/util.c b/libcli/smb/util.c index 473b479a2ab..4861c13dd82 100644 --- a/libcli/smb/util.c +++ b/libcli/smb/util.c @@ -171,7 +171,7 @@ mode_t wire_perms_to_unix(uint32_t perms) * never change. ****************************************************************************/ -static mode_t unix_filetypes[] = +static const mode_t unix_filetypes[] = {S_IFREG, S_IFDIR, S_IFLNK, S_IFCHR, S_IFBLK, S_IFIFO, S_IFSOCK}; mode_t wire_filetype_to_unix(uint32_t wire_type) diff --git a/python/samba/tests/smb3unix.py b/python/samba/tests/smb3unix.py index 302b34776d7..df845d9e0c0 100644 --- a/python/samba/tests/smb3unix.py +++ b/python/samba/tests/smb3unix.py @@ -372,10 +372,13 @@ class Smb3UnixTests(samba.tests.libsmb.LibsmbTests): posix=True) self.assertTrue(c.have_posix()) + wire_mode = libsmb.unix_mode_to_wire( + stat.S_IFREG|stat.S_IWUSR|stat.S_IRUSR) + f,_,cc_out = c.create_ex('\\test_create_context_basic1_file', DesiredAccess=security.SEC_STD_ALL, CreateDisposition=libsmb.FILE_CREATE, - CreateContexts=[posix_context(0o600)]) + CreateContexts=[posix_context(wire_mode)]) c.close(f) cc = ndr_unpack(smb3posix.smb3_posix_cc_info, cc_out[0][1]) @@ -386,11 +389,14 @@ class Smb3UnixTests(samba.tests.libsmb.LibsmbTests): self.assertEqual(cc.owner, dom_sid(self.samsid + "-1000")) self.assertTrue(str(cc.group).startswith("S-1-22-2-")) + wire_mode = libsmb.unix_mode_to_wire( + stat.S_IFREG|stat.S_IRUSR|stat.S_IWUSR|stat.S_IXUSR) + f,_,cc_out = c.create_ex('\\test_create_context_basic1_dir', DesiredAccess=security.SEC_STD_ALL, CreateDisposition=libsmb.FILE_CREATE, CreateOptions=libsmb.FILE_DIRECTORY_FILE, - CreateContexts=[posix_context(0o700)]) + CreateContexts=[posix_context(wire_mode)]) c.close(f) diff --git a/source3/libnet/libnet_join.c b/source3/libnet/libnet_join.c index 76ffe5ed2bb..fb5dfa33c90 100644 --- a/source3/libnet/libnet_join.c +++ b/source3/libnet/libnet_join.c @@ -893,12 +893,11 @@ static bool libnet_join_derive_salting_principal(TALLOC_CTX *mem_ctx, } salt = talloc_strdup(mem_ctx, std_salt); + SAFE_FREE(std_salt); if (!salt) { return false; } - SAFE_FREE(std_salt); - /* if it's a Windows functional domain, we have to look for the UPN */ if (domain_func == DS_DOMAIN_FUNCTION_2000) { diff --git a/source3/script/tests/test_shadow_copy.sh b/source3/script/tests/test_shadow_copy.sh index dd6699f2310..4f6737e0add 100755 --- a/source3/script/tests/test_shadow_copy.sh +++ b/source3/script/tests/test_shadow_copy.sh @@ -100,7 +100,7 @@ build_snapshots() local prefix #prefix from snapshot dir to share root local start #timestamp index of first snapshot local end #timestamp index of last snapshot - local sub #creat a snapshot of subtree of share + local sub #create a snapshot of subtree of share local snapdir local snapname local i @@ -221,7 +221,7 @@ test_fetch_snap_file() -c "get ${SNAPSHOTS[$snapidx]}/$path $WORKDIR/foo" } -# Test fetching a previous version of a file +# Test listing the previous version of a dir test_fetch_snap_dir() { local share diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c index 89a5fe4f338..0c2e365c239 100644 --- a/source3/smbd/filename.c +++ b/source3/smbd/filename.c @@ -1154,6 +1154,7 @@ next: '/', &target); if (ret != 0) { + TALLOC_FREE(symlink_err); return map_nt_error_from_unix(ret); } diff --git a/source3/smbd/smb1_trans2.c b/source3/smbd/smb1_trans2.c index 244a8740b0f..3bb957348cc 100644 --- a/source3/smbd/smb1_trans2.c +++ b/source3/smbd/smb1_trans2.c @@ -2527,13 +2527,13 @@ static NTSTATUS smb_q_posix_acl( #endif } -static NTSTATUS smb_q_posix_symlink( - struct connection_struct *conn, - struct smb_request *req, - struct files_struct *dirfsp, - struct smb_filename *smb_fname, - char **ppdata, - int *ptotal_data) +static NTSTATUS smb_q_posix_symlink(struct connection_struct *conn, + struct smb_request *req, + struct files_struct *dirfsp, + struct smb_filename *smb_fname, + struct smb_filename *smb_fname_rel, + char **ppdata, + int *ptotal_data) { char *target = NULL; size_t needed, len; @@ -2557,16 +2557,9 @@ static NTSTATUS smb_q_posix_symlink( NULL, &target); } else { - struct smb_filename smb_fname_rel = *smb_fname; - char *slash = NULL; - - slash = strrchr_m(smb_fname->base_name, '/'); - if (slash != NULL) { - smb_fname_rel.base_name = slash + 1; - } status = readlink_talloc(talloc_tos(), dirfsp, - &smb_fname_rel, + smb_fname_rel, &target); } @@ -2613,6 +2606,7 @@ static void call_trans2qpathinfo( char *params = *pparams; uint16_t info_level; struct smb_filename *smb_fname = NULL; + struct smb_filename *smb_fname_rel = NULL; bool delete_pending = False; struct timespec write_time_ts = { .tv_sec = 0, }; struct files_struct *dirfsp = NULL; @@ -2682,13 +2676,15 @@ static void call_trans2qpathinfo( reply_nterror(req, status); return; } - status = filename_convert_dirfsp(req, - conn, - fname, - ucf_flags, - twrp, - &dirfsp, - &smb_fname); + status = filename_convert_dirfsp_rel(req, + conn, + conn->cwd_fsp, + fname, + ucf_flags, + twrp, + &dirfsp, + &smb_fname, + &smb_fname_rel); if (!NT_STATUS_IS_OK(status)) { if (NT_STATUS_EQUAL(status,NT_STATUS_PATH_NOT_COVERED)) { reply_botherror(req, @@ -2779,13 +2775,13 @@ static void call_trans2qpathinfo( break; case SMB_QUERY_FILE_UNIX_LINK: - status = smb_q_posix_symlink( - conn, - req, - dirfsp, - smb_fname, - ppdata, - &total_data); + status = smb_q_posix_symlink(conn, + req, + dirfsp, + smb_fname, + smb_fname_rel, + ppdata, + &total_data); break; } diff --git a/source3/smbd/smb2_trans2.c b/source3/smbd/smb2_trans2.c index 442515af377..4fa72f34978 100644 --- a/source3/smbd/smb2_trans2.c +++ b/source3/smbd/smb2_trans2.c @@ -3021,23 +3021,12 @@ NTSTATUS smbd_do_qfilepathinfo(connection_struct *conn, fsp_fnum_dbg(fsp), info_level, max_data_bytes); - /* - * In case of querying a symlink in POSIX context, - * fsp will be NULL. fdos_mode() deals with it. - */ - if (fsp != NULL) { - smb_fname = fsp->fsp_name; - } + smb_fname = fsp->fsp_name; mode = fdos_mode(fsp); psbuf = &smb_fname->st; - if (fsp != NULL) { - base_sp = fsp->base_fsp ? - &fsp->base_fsp->fsp_name->st : - &fsp->fsp_name->st; - } else { - base_sp = &smb_fname->st; - } + base_sp = (fsp->base_fsp != NULL) ? &fsp->base_fsp->fsp_name->st + : &fsp->fsp_name->st; nlink = psbuf->st_ex_nlink; diff --git a/source3/utils/ntlm_auth.c b/source3/utils/ntlm_auth.c index 3642df89c8d..905f33840b1 100644 --- a/source3/utils/ntlm_auth.c +++ b/source3/utils/ntlm_auth.c @@ -2455,7 +2455,7 @@ static bool check_auth_crap(void) char user_session_key[16]; char *hex_lm_key; char *hex_user_session_key; - char *error_string; + char *error_string = NULL; uint8_t authoritative = 1; setbuf(stdout, NULL); @@ -2485,6 +2485,7 @@ static bool check_auth_crap(void) SAFE_FREE(error_string); return False; } + SAFE_FREE(error_string); if (request_lm_key && (!all_zero((uint8_t *)lm_key, sizeof(lm_key)))) { diff --git a/source3/utils/ntlm_auth_diagnostics.c b/source3/utils/ntlm_auth_diagnostics.c index 69034434148..1a57f7726f2 100644 --- a/source3/utils/ntlm_auth_diagnostics.c +++ b/source3/utils/ntlm_auth_diagnostics.c @@ -200,7 +200,7 @@ static bool test_ntlm_in_lm(bool lanman_support_expected) uchar lm_hash[16]; uchar user_session_key[16]; DATA_BLOB chall = get_challenge(); - char *error_string; + char *error_string = NULL; ZERO_STRUCT(user_session_key); @@ -231,6 +231,7 @@ static bool test_ntlm_in_lm(bool lanman_support_expected) SAFE_FREE(error_string); return False; } + SAFE_FREE(error_string); /* If we are told the DC is Samba4, expect an LM key of zeros */ if (!lanman_support_expected) { @@ -289,7 +290,7 @@ static bool test_ntlm_in_both(bool lanman_support_expected) uint8_t user_session_key[16]; uint8_t nt_hash[16]; DATA_BLOB chall = get_challenge(); - char *error_string; + char *error_string = NULL; ZERO_STRUCT(lm_key); ZERO_STRUCT(user_session_key); @@ -323,6 +324,7 @@ static bool test_ntlm_in_both(bool lanman_support_expected) SAFE_FREE(error_string); return False; } + SAFE_FREE(error_string); /* If we are told the DC is Samba4, expect an LM key of zeros */ if (!lanman_support_expected) { @@ -375,7 +377,7 @@ static bool test_lmv2_ntlmv2_broken(enum ntlm_break break_which) uint8_t authoritative = 1; uchar user_session_key[16]; DATA_BLOB chall = get_challenge(); - char *error_string; + char *error_string = NULL; ZERO_STRUCT(user_session_key); @@ -429,6 +431,8 @@ static bool test_lmv2_ntlmv2_broken(enum ntlm_break break_which) return break_which == BREAK_NT; } + SAFE_FREE(error_string); + if (break_which != NO_NT && break_which != BREAK_NT && memcmp(ntlmv2_session_key.data, user_session_key, sizeof(user_session_key)) != 0) { DEBUG(1, ("USER (NTLMv2) Session Key does not match expectations!\n")); @@ -509,7 +513,7 @@ static bool test_plaintext(enum ntlm_break break_which) uchar lm_key[16]; static const uchar zeros[8] = { 0, }; DATA_BLOB chall = data_blob(zeros, sizeof(zeros)); - char *error_string; + char *error_string = NULL; ZERO_STRUCT(user_session_key); @@ -583,6 +587,7 @@ static bool test_plaintext(enum ntlm_break break_which) SAFE_FREE(error_string); return break_which == BREAK_NT; } + SAFE_FREE(error_string); return break_which != BREAK_NT; } diff --git a/source4/lib/samba3/smbpasswd.c b/source4/lib/samba3/smbpasswd.c index 6f4d832ae2b..d0b7e9dbd48 100644 --- a/source4/lib/samba3/smbpasswd.c +++ b/source4/lib/samba3/smbpasswd.c @@ -89,11 +89,7 @@ char *smbpasswd_sethexpwd(TALLOC_CTX *mem_ctx, struct samr_Password *pwd, uint16 { char *p; if (pwd != NULL) { - p = talloc_array(mem_ctx, char, 33); - if (!p) { - return NULL; - } - hex_encode_buf(p, pwd->hash, sizeof(pwd->hash)); + p = hex_encode_talloc(mem_ctx, pwd->hash, sizeof(pwd->hash)); } else { if (acb_info & ACB_PWNOTREQ) p = talloc_strdup(mem_ctx, "NO PASSWORDXXXXXXXXXXXXXXXXXXXXX"); diff --git a/source4/ntvfs/ipc/ipc_rap.c b/source4/ntvfs/ipc/ipc_rap.c index 9ddde5e39d7..95be64fe7b6 100644 --- a/source4/ntvfs/ipc/ipc_rap.c +++ b/source4/ntvfs/ipc/ipc_rap.c @@ -253,7 +253,7 @@ static NTSTATUS rap_push_string(struct ndr_push *data_push, static NTSTATUS _rap_netshareenum(struct rap_call *call) { - struct rap_NetShareEnum r; + struct rap_NetShareEnum r = {}; NTSTATUS result; uint32_t offset_save = 0; struct rap_heap_save heap_save = {0}; @@ -333,7 +333,7 @@ static NTSTATUS _rap_netshareenum(struct rap_call *call) static NTSTATUS _rap_netserverenum2(struct rap_call *call) { - struct rap_NetServerEnum2 r; + struct rap_NetServerEnum2 r = {}; NTSTATUS result; uint32_t offset_save = 0; struct rap_heap_save heap_save = {0}; -- Samba Shared Repository