[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Tue Jan 10 01:24:02 UTC 2023


The branch, master has been updated
       via  8ee20346745 smbd: Use an idtree for local IDs
       via  b73ecb28a7a lib: Remove idtree from samba_util.h
       via  743df9009b4 smbd: Simplify smbXsrv_open_set_replay_cache() with dbwrap_store_bystring()
       via  bac265689ac smbd: Simplify smbXsrv_open_set_replay_cache() with a struct assignment
       via  43f041de656 lib: Add "starting_id" to idr_get_new_random()
       via  a71288e86bd smbd: Remove smbXsrv_open->db_rec
       via  fdca0558efa smbd: Remove a "can't happen" NULL check
       via  0c709cb6b70 smbd: Use talloc_tos() for pushing smbXsrv_open_globalB
       via  88191630d20 lib: Use tdb_data_dbg() where appropriate
       via  9d7c7357a41 lib: Add tdb_data_dbg()
       via  ea7abdc1308 smbd: Avoid explicit ZERO_STRUCT()
       via  db25f0a07cf smbd: Move bytes from r/w data to r/o text section
       via  e0fc84668ba lib: Move 16 bytes to readonly .text segment
       via  14f761ec7dd lib: Remove unused smb_mkstemp prototype
       via  7ee474d9fd1 lib: Move tab_depth() to reg_parse_prs.c
       via  6907db5cf0a lib: Make map_share_mode_to_deny_mode() static to smbstatus
       via  158314e0b1d smbd: Make get_safe_[[SI]VAL|ptr] static to smb1_lanman.c
      from  56837f3d316 CVE-2022-38023 s3:rpc_server/netlogon: Avoid unnecessary loadparm_context allocations

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 8ee203467455da0b9f774acbcc44e9b58570d811
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 12:18:44 2023 +0100

    smbd: Use an idtree for local IDs
    
    Volatile file handle IDs are purely per-process, in fact we used a
    dbwrap_rbt for this. To get a unique ID we however have the
    specialized idtree data structure, we don't need to repeat the
    allocation algorithm that already exists there.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Jan 10 01:23:38 UTC 2023 on sn-devel-184

commit b73ecb28a7ac5996e1a8c455d15f41f59d9d8765
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 10:04:23 2023 +0100

    lib: Remove idtree from samba_util.h
    
    No need to recompile the world when only a few files need this.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 743df9009b4b9aa9d6f85a999fa9e5237f96f2b7
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 12:34:43 2023 +0100

    smbd: Simplify smbXsrv_open_set_replay_cache() with dbwrap_store_bystring()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit bac265689acd081c264013d680219078b1ef466d
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 12:31:26 2023 +0100

    smbd: Simplify smbXsrv_open_set_replay_cache() with a struct assignment
    
    Use a direct struct assignment instead of a function call
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 43f041de6567bcb40a8e4564fce66ee08af6cc0b
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 11:43:59 2023 +0100

    lib: Add "starting_id" to idr_get_new_random()
    
    To be used in smbXsrv_open.c, for this we need a lower bound.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit a71288e86bda43caf6feaff22a36942e6595a971
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 11:29:51 2023 +0100

    smbd: Remove smbXsrv_open->db_rec
    
    This was only referenced in smbXsrv_open_close, but it was never
    assigned anything but NULL.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit fdca0558efa7a22e98b851480509d2b7f11df2e0
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 10:13:31 2023 +0100

    smbd: Remove a "can't happen" NULL check
    
    This should really not happen, crashing would be the right response.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 0c709cb6b70ed94b82a598bf3fb581ffb7c48200
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 10:12:22 2023 +0100

    smbd: Use talloc_tos() for pushing smbXsrv_open_globalB
    
    Use the toplevel talloc pool
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 88191630d2060ead9698c791e0d708d6e97ab83e
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 09:52:50 2023 +0100

    lib: Use tdb_data_dbg() where appropriate
    
    This changes the talloc hierarchy for a few callers, but as
    talloc_tos() was initially designed exactly for this purpose (printing
    SIDs in DEBUG), it should be okay.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 9d7c7357a4138989aaaa8311d0fb842968050a37
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 09:40:06 2023 +0100

    lib: Add tdb_data_dbg()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit ea7abdc1308e8a718862539b595fe1b09bc43ed9
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 08:50:28 2023 +0100

    smbd: Avoid explicit ZERO_STRUCT()
    
    Saves a few bytes of .text
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit db25f0a07cff924939914a33068d1d3e4fc1ca3c
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Jan 4 06:22:55 2023 +0100

    smbd: Move bytes from r/w data to r/o text section
    
    Even const arrays of const strings need to be relocated at startup time.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit e0fc84668ba1ec2048354fb1b674d2673454fde7
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 3 19:32:41 2023 +0100

    lib: Move 16 bytes to readonly .text segment
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 14f761ec7dde9185717ef178d7fc2118d12ee49e
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 3 19:27:50 2023 +0100

    lib: Remove unused smb_mkstemp prototype
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 7ee474d9fd180c43f5344b81b6ba0b2fc09f756e
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 3 19:14:24 2023 +0100

    lib: Move tab_depth() to reg_parse_prs.c
    
    Wow, I did not know we still use prs_struct...
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 6907db5cf0a586db2bfe3a508c753be44bdc317f
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 3 18:45:14 2023 +0100

    lib: Make map_share_mode_to_deny_mode() static to smbstatus
    
    At some point in the future this might disappear, we should really not
    show DOS share modes in smbstatus. Maybe this can't be changed though.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 158314e0b1df76e87fc3b1cd1260e703a21ce1ca
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Jan 3 18:41:04 2023 +0100

    smbd: Make get_safe_[[SI]VAL|ptr] static to smb1_lanman.c
    
    SMB1-specific, only used there.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 examples/fuse/clifuse.c            |   1 +
 lib/util/idtree_random.c           |  16 +-
 lib/util/idtree_random.h           |   5 +-
 lib/util/samba_util.h              |   3 -
 lib/util/tests/idtree.c            |   1 +
 libcli/cldap/cldap.c               |   5 +-
 libcli/nbt/nbtsocket.c             |   4 +-
 librpc/rpc/dcesrv_core.c           |   1 +
 source3/auth/auth_samba4.c         |   1 +
 source3/include/proto.h            |   6 -
 source3/include/util_tdb.h         |   1 +
 source3/lib/filename_util.c        |   2 +-
 source3/lib/g_lock.c               |   8 +-
 source3/lib/util.c                 |  69 ------
 source3/lib/util_tdb.c             |   5 +
 source3/libads/kerberos.c          |   6 +-
 source3/librpc/idl/smbXsrv.idl     |   1 -
 source3/libsmb/cli_smb2_fnum.c     |   1 +
 source3/locking/share_mode_lock.c  |   2 +-
 source3/registry/reg_parse_prs.c   |   8 +
 source3/rpc_server/rpc_server.c    |   2 +
 source3/rpc_server/rpc_worker.c    |   2 +-
 source3/smbd/smb1_lanman.c         |  56 +++++
 source3/smbd/smb2_trans2.c         |  21 +-
 source3/smbd/smbXsrv_client.c      |  22 +-
 source3/smbd/smbXsrv_open.c        | 423 ++++++-------------------------------
 source3/smbd/smbXsrv_session.c     |  29 ++-
 source3/smbd/smbXsrv_tcon.c        |  29 ++-
 source3/utils/status.c             |  22 ++
 source4/lib/messaging/messaging.c  |   1 +
 source4/nbt_server/interfaces.c    |   2 +-
 source4/ntvfs/posix/pvfs_search.c  |   1 +
 source4/ntvfs/posix/vfs_posix.c    |   1 +
 source4/rpc_server/dcerpc_server.c |   4 +-
 source4/smb_server/handle.c        |   2 +-
 source4/smb_server/session.c       |   8 +-
 source4/smb_server/smb2/receive.c  |   2 +-
 source4/smb_server/tcon.c          |   4 +-
 38 files changed, 260 insertions(+), 517 deletions(-)


Changeset truncated at 500 lines:

diff --git a/examples/fuse/clifuse.c b/examples/fuse/clifuse.c
index 2d9edad5f47..75cb72f7f87 100644
--- a/examples/fuse/clifuse.c
+++ b/examples/fuse/clifuse.c
@@ -31,6 +31,7 @@
 #include "libcli/smb/smbXcli_base.h"
 #include "libcli/security/security.h"
 #include "clifuse.h"
+#include "lib/util/idtree.h"
 
 struct mount_state {
 	struct tevent_context *ev;
diff --git a/lib/util/idtree_random.c b/lib/util/idtree_random.c
index 80758e74d6d..d22245a7734 100644
--- a/lib/util/idtree_random.c
+++ b/lib/util/idtree_random.c
@@ -40,7 +40,10 @@
 /**
   allocate a new id randomly in the given range
 */
-_PUBLIC_ int idr_get_new_random(struct idr_context *idp, void *ptr, int limit)
+_PUBLIC_ int idr_get_new_random(struct idr_context *idp,
+				void *ptr,
+				int starting_id,
+				int limit)
 {
 	int id;
 
@@ -48,12 +51,17 @@ _PUBLIC_ int idr_get_new_random(struct idr_context *idp, void *ptr, int limit)
 	   then start randomly in the bottom half of the range. This can only
 	   fail if the range is over half full, and finally fallback to any
 	   free id */
-	id = idr_get_new_above(idp, ptr, 1+(generate_random() % limit), limit);
+	id = idr_get_new_above(
+		idp, ptr, starting_id+(generate_random() % limit), limit);
 	if (id == -1) {
-		id = idr_get_new_above(idp, ptr, 1+(generate_random()%(limit/2)), limit);
+		id = idr_get_new_above(
+			idp,
+			ptr,
+			starting_id+(generate_random()%(limit/2)),
+			limit);
 	}
 	if (id == -1) {
-		id = idr_get_new_above(idp, ptr, 1, limit);
+		id = idr_get_new_above(idp, ptr, starting_id, limit);
 	}
 
 	return id;
diff --git a/lib/util/idtree_random.h b/lib/util/idtree_random.h
index 4d3b61c33d5..623147c48a7 100644
--- a/lib/util/idtree_random.h
+++ b/lib/util/idtree_random.h
@@ -33,6 +33,9 @@
 /**
   allocate a new id randomly in the given range
 */
-int idr_get_new_random(struct idr_context *idp, void *ptr, int limit);
+int idr_get_new_random(struct idr_context *idp,
+		       void *ptr,
+		       int starting_id,
+		       int limit);
 
 #endif /* _SAMBA_IDTREE_RANDOM_H_ */
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index d8c8522616d..4eecfb8a583 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -589,9 +589,6 @@ int ms_fnmatch_protocol(const char *pattern, const char *string, int protocol,
 /** a generic fnmatch function - uses for non-CIFS pattern matching */
 int gen_fnmatch(const char *pattern, const char *string);
 
-#include "idtree.h"
-#include "idtree_random.h"
-
 #include "become_daemon.h"
 
 /**
diff --git a/lib/util/tests/idtree.c b/lib/util/tests/idtree.c
index f4f7b1130e2..d54ab2773ff 100644
--- a/lib/util/tests/idtree.c
+++ b/lib/util/tests/idtree.c
@@ -22,6 +22,7 @@
 #include "includes.h"
 #include "torture/torture.h"
 #include "torture/local/proto.h"
+#include "lib/util/idtree.h"
 
 static bool torture_local_idtree_simple(struct torture_context *tctx)
 {
diff --git a/libcli/cldap/cldap.c b/libcli/cldap/cldap.c
index 3cca85b9921..6c2bf86c111 100644
--- a/libcli/cldap/cldap.c
+++ b/libcli/cldap/cldap.c
@@ -43,6 +43,7 @@
 #include "../librpc/gen_ndr/ndr_nbt.h"
 #include "../lib/util/asn1.h"
 #include "../lib/util/tevent_ntstatus.h"
+#include "lib/util/idtree_random.h"
 
 #undef strcasecmp
 
@@ -623,8 +624,8 @@ struct tevent_req *cldap_search_send(TALLOC_CTX *mem_ctx,
 		state->request.dest = NULL;
 	}
 
-	state->message_id = idr_get_new_random(cldap->searches.idr,
-					       state, UINT16_MAX);
+	state->message_id = idr_get_new_random(
+		cldap->searches.idr, state, 1, UINT16_MAX);
 	if (state->message_id == -1) {
 		tevent_req_nterror(req, NT_STATUS_INSUFFICIENT_RESOURCES);
 		goto post;
diff --git a/libcli/nbt/nbtsocket.c b/libcli/nbt/nbtsocket.c
index 97b0ca34337..47e73cf2e8d 100644
--- a/libcli/nbt/nbtsocket.c
+++ b/libcli/nbt/nbtsocket.c
@@ -27,6 +27,7 @@
 #include "lib/socket/socket.h"
 #include "librpc/gen_ndr/ndr_nbt.h"
 #include "param/param.h"
+#include "lib/util/idtree_random.h"
 
 #define NBT_MAX_REPLIES 1000
 
@@ -407,7 +408,8 @@ struct nbt_name_request *nbt_name_request_send(TALLOC_CTX *mem_ctx,
 
 	/* we select a random transaction id unless the user supplied one */
 	if (request->name_trn_id == 0) {
-		id = idr_get_new_random(req->nbtsock->idr, req, UINT16_MAX);
+		id = idr_get_new_random(
+			req->nbtsock->idr, req, 1, UINT16_MAX);
 	} else {
 		if (idr_find(req->nbtsock->idr, request->name_trn_id)) goto failed;
 		id = idr_get_new_above(req->nbtsock->idr, req, request->name_trn_id,
diff --git a/librpc/rpc/dcesrv_core.c b/librpc/rpc/dcesrv_core.c
index 9fd71812905..d2870046248 100644
--- a/librpc/rpc/dcesrv_core.c
+++ b/librpc/rpc/dcesrv_core.c
@@ -34,6 +34,7 @@
 #include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "lib/util/tevent_ntstatus.h"
 #include "system/network.h"
+#include "lib/util/idtree_random.h"
 
 /**
  * @file
diff --git a/source3/auth/auth_samba4.c b/source3/auth/auth_samba4.c
index 6c017ef4aa3..dec67a488d7 100644
--- a/source3/auth/auth_samba4.c
+++ b/source3/auth/auth_samba4.c
@@ -29,6 +29,7 @@
 #include "auth/gensec/gensec.h"
 #include "auth/credentials/credentials.h"
 #include "lib/global_contexts.h"
+#include "lib/util/idtree.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_AUTH
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 79d424fd10d..ae2a9533f23 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -335,11 +335,9 @@ void set_remote_arch(enum remote_arch_types type);
 enum remote_arch_types get_remote_arch(void);
 bool remote_arch_cache_update(const struct GUID *client_guid);
 bool remote_arch_cache_delete(const struct GUID *client_guid);
-const char *tab_depth(int level, int depth);
 int str_checksum(const char *s);
 void zero_free(void *p, size_t size);
 int set_maxfiles(int requested_max);
-int smb_mkstemp(char *name_template);
 void *smb_xmalloc_array(size_t size, unsigned int count);
 char *myhostname(void);
 char *myhostname_upper(void);
@@ -353,16 +351,12 @@ bool mask_match_search(const char *string, const char *pattern, bool is_case_sen
 bool mask_match_list(const char *string, char **list, int listLen, bool is_case_sensitive);
 #include "lib/util/unix_match.h"
 bool name_to_fqdn(fstring fqdn, const char *name);
-uint32_t map_share_mode_to_deny_mode(uint32_t share_access, uint32_t private_options);
 
 #include "lib/util_procid.h"
 
 struct server_id interpret_pid(const char *pid_string);
 bool is_offset_safe(const char *buf_base, size_t buf_len, char *ptr, size_t off);
-char *get_safe_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off);
 char *get_safe_str_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off);
-int get_safe_SVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval);
-int get_safe_IVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval);
 bool split_domain_user(TALLOC_CTX *mem_ctx,
 		       const char *full_name,
 		       char **domain,
diff --git a/source3/include/util_tdb.h b/source3/include/util_tdb.h
index d4efb0c31aa..ff50918ddf8 100644
--- a/source3/include/util_tdb.h
+++ b/source3/include/util_tdb.h
@@ -41,6 +41,7 @@ NTSTATUS map_nt_error_from_tdb(enum TDB_ERROR err);
 int tdb_data_cmp(TDB_DATA t1, TDB_DATA t2);
 
 char *tdb_data_string(TALLOC_CTX *mem_ctx, TDB_DATA d);
+char *tdb_data_dbg(TDB_DATA d);
 
 /****************************************************************************
  Lock a chain, with timeout.
diff --git a/source3/lib/filename_util.c b/source3/lib/filename_util.c
index 1ba8fceb6e0..3f8e9033ba5 100644
--- a/source3/lib/filename_util.c
+++ b/source3/lib/filename_util.c
@@ -337,7 +337,7 @@ bool is_ntfs_default_stream_smb_fname(const struct smb_filename *smb_fname)
  Filter out Windows invalid EA names (list probed from Windows 2012).
 ****************************************************************************/
 
-static char bad_ea_name_chars[] = "\"*+,/:;<=>?[\\]|";
+static const char bad_ea_name_chars[] = "\"*+,/:;<=>?[\\]|";
 
 bool is_invalid_windows_ea_name(const char *name)
 {
diff --git a/source3/lib/g_lock.c b/source3/lib/g_lock.c
index 3c27a63d8d5..d3f049d43bb 100644
--- a/source3/lib/g_lock.c
+++ b/source3/lib/g_lock.c
@@ -1469,9 +1469,7 @@ static void g_lock_writev_data_fn(
 	ok = g_lock_parse(value.dptr, value.dsize, &lck);
 	if (!ok) {
 		DBG_DEBUG("g_lock_parse for %s failed\n",
-			  hex_encode_talloc(talloc_tos(),
-					    state->key.dptr,
-					    state->key.dsize));
+			  tdb_data_dbg(state->key));
 		state->status = NT_STATUS_INTERNAL_DB_CORRUPTION;
 		return;
 	}
@@ -1604,9 +1602,7 @@ static void g_lock_dump_fn(TDB_DATA key, TDB_DATA data,
 	ok = g_lock_parse(data.dptr, data.dsize, &lck);
 	if (!ok) {
 		DBG_DEBUG("g_lock_parse failed for %s\n",
-			  hex_encode_talloc(talloc_tos(),
-					    state->key.dptr,
-					    state->key.dsize));
+			  tdb_data_dbg(state->key));
 		state->status = NT_STATUS_INTERNAL_DB_CORRUPTION;
 		return;
 	}
diff --git a/source3/lib/util.c b/source3/lib/util.c
index eef76662f45..83707b31e38 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -1235,13 +1235,6 @@ bool remote_arch_cache_delete(const struct GUID *client_guid)
 	return true;
 }
 
-const char *tab_depth(int level, int depth)
-{
-	if( CHECK_DEBUGLVL(level) ) {
-		dbgtext("%*s", depth*4, "");
-	}
-	return "";
-}
 
 /*****************************************************************************
  Provide a checksum on a string
@@ -1586,27 +1579,6 @@ bool name_to_fqdn(fstring fqdn, const char *name)
 	return true;
 }
 
-uint32_t map_share_mode_to_deny_mode(uint32_t share_access, uint32_t private_options)
-{
-	switch (share_access & ~FILE_SHARE_DELETE) {
-		case FILE_SHARE_NONE:
-			return DENY_ALL;
-		case FILE_SHARE_READ:
-			return DENY_WRITE;
-		case FILE_SHARE_WRITE:
-			return DENY_READ;
-		case FILE_SHARE_READ|FILE_SHARE_WRITE:
-			return DENY_NONE;
-	}
-	if (private_options & NTCREATEX_FLAG_DENY_DOS) {
-		return DENY_DOS;
-	} else if (private_options & NTCREATEX_FLAG_DENY_FCB) {
-		return DENY_FCB;
-	}
-
-	return (uint32_t)-1;
-}
-
 struct server_id interpret_pid(const char *pid_string)
 {
 	return server_id_from_string(get_my_vnn(), pid_string);
@@ -1637,16 +1609,6 @@ bool is_offset_safe(const char *buf_base, size_t buf_len, char *ptr, size_t off)
 	return False;
 }
 
-/****************************************************************
- Return a safe pointer into a buffer, or NULL.
-****************************************************************/
-
-char *get_safe_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t off)
-{
-	return is_offset_safe(buf_base, buf_len, ptr, off) ?
-			ptr + off : NULL;
-}
-
 /****************************************************************
  Return a safe pointer into a string within a buffer, or NULL.
 ****************************************************************/
@@ -1663,37 +1625,6 @@ char *get_safe_str_ptr(const char *buf_base, size_t buf_len, char *ptr, size_t o
 	return ptr + off;
 }
 
-/****************************************************************
- Return an SVAL at a pointer, or failval if beyond the end.
-****************************************************************/
-
-int get_safe_SVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval)
-{
-	/*
-	 * Note we use off+1 here, not off+2 as SVAL accesses ptr[0] and ptr[1],
- 	 * NOT ptr[2].
- 	 */
-	if (!is_offset_safe(buf_base, buf_len, ptr, off+1)) {
-		return failval;
-	}
-	return SVAL(ptr,off);
-}
-
-/****************************************************************
- Return an IVAL at a pointer, or failval if beyond the end.
-****************************************************************/
-
-int get_safe_IVAL(const char *buf_base, size_t buf_len, char *ptr, size_t off, int failval)
-{
-	/*
-	 * Note we use off+3 here, not off+4 as IVAL accesses
-	 * ptr[0] ptr[1] ptr[2] ptr[3] NOT ptr[4].
- 	 */
-	if (!is_offset_safe(buf_base, buf_len, ptr, off+3)) {
-		return failval;
-	}
-	return IVAL(ptr,off);
-}
 
 /****************************************************************
  Split DOM\user into DOM and user. Do not mix with winbind variants of that
diff --git a/source3/lib/util_tdb.c b/source3/lib/util_tdb.c
index 943847f04a3..d85f676fbcf 100644
--- a/source3/lib/util_tdb.c
+++ b/source3/lib/util_tdb.c
@@ -365,6 +365,11 @@ done:
 	return ret;
 }
 
+char *tdb_data_dbg(TDB_DATA d)
+{
+	return hex_encode_talloc(talloc_tos(), d.dptr, d.dsize);
+}
+
 static sig_atomic_t gotalarm;
 
 /***************************************************************
diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
index 283c2aa12d2..9a5ca567ca9 100644
--- a/source3/libads/kerberos.c
+++ b/source3/libads/kerberos.c
@@ -789,9 +789,9 @@ bool create_local_private_krb5_conf_for_domain(const char *realm,
 	fd = mkstemp(tmpname);
 	umask(mask);
 	if (fd == -1) {
-		DEBUG(0,("create_local_private_krb5_conf_for_domain: smb_mkstemp failed,"
-			" for file %s. Errno %s\n",
-			tmpname, strerror(errno) ));
+		DBG_ERR("mkstemp failed, for file %s. Errno %s\n",
+			tmpname,
+			strerror(errno));
 		goto done;
 	}
 
diff --git a/source3/librpc/idl/smbXsrv.idl b/source3/librpc/idl/smbXsrv.idl
index ec65a5c1a61..e0a751f32de 100644
--- a/source3/librpc/idl/smbXsrv.idl
+++ b/source3/librpc/idl/smbXsrv.idl
@@ -514,7 +514,6 @@ interface smbXsrv
 	 */
 	typedef struct {
 		[ignore] smbXsrv_open_table		*table;
-		[ignore] db_record 			*db_rec;
 		uint32					local_id;
 		[ref] smbXsrv_open_global0		*global;
 		NTSTATUS				status;
diff --git a/source3/libsmb/cli_smb2_fnum.c b/source3/libsmb/cli_smb2_fnum.c
index 734c24531d9..5852f9177fd 100644
--- a/source3/libsmb/cli_smb2_fnum.c
+++ b/source3/libsmb/cli_smb2_fnum.c
@@ -43,6 +43,7 @@
 #include "ntioctl.h"
 #include "librpc/gen_ndr/ndr_quota.h"
 #include "lib/util/string_wrappers.h"
+#include "lib/util/idtree.h"
 
 struct smb2_hnd {
 	uint64_t fid_persistent;
diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c
index e123084677d..09a02853511 100644
--- a/source3/locking/share_mode_lock.c
+++ b/source3/locking/share_mode_lock.c
@@ -775,7 +775,7 @@ static bool share_mode_g_lock_within_cb(TDB_DATA key)
 		DBG_ERR("Can not lock two share modes "
 			"simultaneously: existing %s requested %s\n",
 			file_id_str_buf(share_mode_lock_key_id, &existing),
-			hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
+			tdb_data_dbg(key));
 		smb_panic(__location__);
 		return false;
 	}
diff --git a/source3/registry/reg_parse_prs.c b/source3/registry/reg_parse_prs.c
index feec7cb2e48..b608a8d9fdc 100644
--- a/source3/registry/reg_parse_prs.c
+++ b/source3/registry/reg_parse_prs.c
@@ -27,6 +27,14 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_PARSE
 
+static const char *tab_depth(int level, int depth)
+{
+	if( CHECK_DEBUGLVL(level) ) {
+		dbgtext("%*s", depth*4, "");
+	}
+	return "";
+}
+
 /*******************************************************************
  Debug output for parsing info
 
diff --git a/source3/rpc_server/rpc_server.c b/source3/rpc_server/rpc_server.c
index 32fbb78f5ff..06fb6bb4472 100644
--- a/source3/rpc_server/rpc_server.c
+++ b/source3/rpc_server/rpc_server.c
@@ -33,6 +33,7 @@
 #include "auth.h"
 #include "rpc_server/rpc_ncacn_np.h"
 #include "rpc_server/srv_pipe_hnd.h"
+#include "lib/util/idtree_random.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
@@ -161,6 +162,7 @@ static NTSTATUS dcesrv_assoc_group_new(struct dcesrv_call_state *call)
 
 	id = idr_get_new_random(dce_ctx->assoc_groups_idr,
 				assoc_group,
+				1,
 				UINT16_MAX);
 	if (id == -1) {
 		TALLOC_FREE(assoc_group);
diff --git a/source3/rpc_server/rpc_worker.c b/source3/rpc_server/rpc_worker.c
index 2d2bb35af0f..1bc84531e55 100644
--- a/source3/rpc_server/rpc_worker.c
+++ b/source3/rpc_server/rpc_worker.c
@@ -654,7 +654,7 @@ static struct dcesrv_assoc_group *rpc_worker_assoc_group_new(
 	}
 
 	id = idr_get_new_random(
-		dce_ctx->assoc_groups_idr, assoc_group, UINT16_MAX);
+		dce_ctx->assoc_groups_idr, assoc_group, 1, UINT16_MAX);
 	if (id == -1) {
 		talloc_free(assoc_group);
 		DBG_WARNING("Out of association groups!\n");
diff --git a/source3/smbd/smb1_lanman.c b/source3/smbd/smb1_lanman.c
index eb8148753b9..65711078c89 100644
--- a/source3/smbd/smb1_lanman.c
+++ b/source3/smbd/smb1_lanman.c
@@ -187,6 +187,62 @@ static int StrlenExpanded(connection_struct *conn, int snum, char *s)
 	return strlen(buf) + 1;
 }
 
+/****************************************************************
+ Return an SVAL at a pointer, or failval if beyond the end.
+****************************************************************/
+
+static int get_safe_SVAL(
+	const char *buf_base,
+	size_t buf_len,
+	char *ptr,
+	size_t off,
+	int failval)
+{
+	/*
+	 * Note we use off+1 here, not off+2 as SVAL accesses ptr[0]
+	 * and ptr[1], NOT ptr[2].
+	 */
+	if (!is_offset_safe(buf_base, buf_len, ptr, off+1)) {
+		return failval;
+	}
+	return SVAL(ptr,off);
+}
+
+/****************************************************************
+ Return an IVAL at a pointer, or failval if beyond the end.
+****************************************************************/
+
+static int get_safe_IVAL(


-- 
Samba Shared Repository



More information about the samba-cvs mailing list