[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Mon Jun 6 20:18:01 UTC 2022
The branch, master has been updated
via a01cb7b4476 winbindd: Remove a "wrong" error message
via 6dfc58624e5 lib: Slightly simplify is_ntfs_stream_smb_fname()
via b3c2d5d4b6b vfs: Remove a typedef
via 38e5b39eac9 smbd: Fix a typo
via a395f752f07 smbd: Fix CID 1504457 Resource leak
via f236c42fb70 smbd: Remove NTCREATEX_FLAG_DELETE_ON_CLOSE
via 540d4ae6b99 lsa_server4: Simplify get_tdo() with talloc_asprintf_addbuf()
via 49b3bbdead7 lsa_server4: Simplify get_tdo() with dom_sid_str_buf()
via 777597d0c65 smbd: Move message_push_string() to smb1_utils.c
via 9ec99ab57ca smbd: Remove unused smb_bufrem() macro
from 7ba732bac12 s3:smbd implement volume serial number parameter
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit a01cb7b44761102f63cb2c7bb009bf1e8b4ebe05
Author: Volker Lendecke <vl at samba.org>
Date: Sun Jun 5 17:28:04 2022 +0200
winbindd: Remove a "wrong" error message
Before 9bacf7529dd child_process_request() returned right after the
callback function without going through the DEBUG message. Restore
that behaviour.
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): Mon Jun 6 20:17:06 UTC 2022 on sn-devel-184
commit 6dfc58624e5b704507d3316be429be4868b202e2
Author: Volker Lendecke <vl at samba.org>
Date: Sun Jun 5 14:39:48 2022 +0200
lib: Slightly simplify is_ntfs_stream_smb_fname()
YMMV, but for me the direct return is easier to read
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit b3c2d5d4b6bfce64e0243c1056076ab9a1b61fea
Author: Volker Lendecke <vl at samba.org>
Date: Fri Jun 3 14:47:30 2022 +0200
vfs: Remove a typedef
We want to get rid of struct typedefs, and this was quick
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 38e5b39eac98b874a80f8fbb741c4bc8d9001614
Author: Volker Lendecke <vl at samba.org>
Date: Thu Jun 2 15:48:37 2022 +0200
smbd: Fix a typo
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit a395f752f0748751d4ade533c41066903f26c2dd
Author: Volker Lendecke <vl at samba.org>
Date: Fri May 20 10:18:59 2022 +0200
smbd: Fix CID 1504457 Resource leak
Highly likely that's a false positive because Coverity does not
understand that srv_encrypt_buffer() only allocates when
NT_STATUS_OK(status), but it does not hurt to make it happy this way.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit f236c42fb703818a72ddba83a56133f94677c7d6
Author: Volker Lendecke <vl at samba.org>
Date: Thu May 19 20:05:52 2022 +0200
smbd: Remove NTCREATEX_FLAG_DELETE_ON_CLOSE
This is only used for print files. Storing it in the fd_handle seems
overkill to me, this can easily be stored directly in the fsp itself,
we have a flag for this.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 540d4ae6b99278e1346caab6ac2bbabd29492222
Author: Volker Lendecke <vl at samba.org>
Date: Fri May 27 20:57:53 2022 +0200
lsa_server4: Simplify get_tdo() with talloc_asprintf_addbuf()
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 49b3bbdead787adf99e5187ede0fc0384af62311
Author: Volker Lendecke <vl at samba.org>
Date: Fri May 27 18:38:34 2022 +0200
lsa_server4: Simplify get_tdo() with dom_sid_str_buf()
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 777597d0c65b3cb735dc3db2a61f91e233551938
Author: Volker Lendecke <vl at samba.org>
Date: Sun Jun 5 16:44:28 2022 +0200
smbd: Move message_push_string() to smb1_utils.c
Only used in SMB1 code
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 9ec99ab57cac80ecb5e4932c44a6d3a568c62f08
Author: Volker Lendecke <vl at samba.org>
Date: Sun Jun 5 16:37:13 2022 +0200
smbd: Remove unused smb_bufrem() macro
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/include/smb.h | 3 --
source3/include/smb_macros.h | 1 -
source3/include/vfs.h | 4 +--
source3/lib/filename_util.c | 6 +---
source3/modules/vfs_ceph.c | 4 +--
source3/modules/vfs_default.c | 4 +--
source3/printing/printspoolss.c | 4 +--
source3/smbd/fd_handle.c | 6 +---
source3/smbd/proto.h | 3 +-
source3/smbd/smb1_process.c | 5 +++-
source3/smbd/smb1_reply.c | 6 ++--
source3/smbd/smb1_trans2.c | 8 ++----
source3/smbd/smb1_utils.c | 55 +++++++++++++++++++++++++++++++++++++
source3/smbd/smb1_utils.h | 2 ++
source3/smbd/smb2_setinfo.c | 5 +---
source3/smbd/smb2_trans2.c | 2 +-
source3/smbd/srvstr.c | 55 -------------------------------------
source3/smbd/statvfs.c | 4 +--
source3/winbindd/winbindd_dual.c | 4 ---
source4/rpc_server/lsa/dcesrv_lsa.c | 38 +++++++------------------
20 files changed, 92 insertions(+), 127 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 90105e00b14..6363bdc0c93 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -407,9 +407,6 @@ Offset Data length.
#define NTCREATEX_FLAG_DENY_DOS 0x0001
#define NTCREATEX_FLAG_DENY_FCB 0x0002
-/* Private flag for printer support */
-#define NTCREATEX_FLAG_DELETE_ON_CLOSE 0x0008
-
/* Private flag for streams support */
#define NTCREATEX_FLAG_STREAM_BASEOPEN 0x0010
diff --git a/source3/include/smb_macros.h b/source3/include/smb_macros.h
index 344a997cbd2..85ef221ed18 100644
--- a/source3/include/smb_macros.h
+++ b/source3/include/smb_macros.h
@@ -151,7 +151,6 @@
#define smb_buflen(buf) (SVAL(buf,smb_vwv0 + (int)CVAL(buf, smb_wct)*2))
/* the remaining number of bytes in smb buffer 'buf' from pointer 'p'. */
-#define smb_bufrem(buf, p) (smb_buflen(buf)-PTR_DIFF(p, smb_buf(buf)))
#define smbreq_bufrem(req, p) (req->buflen - PTR_DIFF(p, req->buf))
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index ac6a3017f80..be4712689eb 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -1313,7 +1313,7 @@ typedef struct vfs_handle_struct {
} vfs_handle_struct;
-typedef struct vfs_statvfs_struct {
+struct vfs_statvfs_struct {
/* For undefined recommended transfer size return -1 in that field */
uint32_t OptimalTransferSize; /* bsize on some os, iosize on other os */
uint32_t BlockSize;
@@ -1340,7 +1340,7 @@ typedef struct vfs_statvfs_struct {
/* NB flags can come from FILE_SYSTEM_DEVICE_INFO call */
int FsCapabilities;
-} vfs_statvfs_struct;
+};
/* Add a new FSP extension of the given type. Returns a pointer to the
* extenstion data.
diff --git a/source3/lib/filename_util.c b/source3/lib/filename_util.c
index ca4d77713ad..1ba8fceb6e0 100644
--- a/source3/lib/filename_util.c
+++ b/source3/lib/filename_util.c
@@ -290,11 +290,7 @@ bool is_ntfs_stream_smb_fname(const struct smb_filename *smb_fname)
{
assert_valid_stream_smb_fname(smb_fname);
- if (smb_fname->stream_name == NULL) {
- return false;
- }
-
- return true;
+ return (smb_fname->stream_name != NULL);
}
/****************************************************************************
diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index 8132f5ba8b1..14582905212 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -263,8 +263,8 @@ static int cephwrap_set_quota(struct vfs_handle_struct *handle, enum SMB_QUOTA_
}
static int cephwrap_statvfs(struct vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- vfs_statvfs_struct *statbuf)
+ const struct smb_filename *smb_fname,
+ struct vfs_statvfs_struct *statbuf)
{
struct statvfs statvfs_buf;
int ret;
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index d67a9fe4325..8e6cbfd3707 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -117,8 +117,8 @@ static int vfswrap_get_shadow_copy_data(struct vfs_handle_struct *handle,
}
static int vfswrap_statvfs(struct vfs_handle_struct *handle,
- const struct smb_filename *smb_fname,
- vfs_statvfs_struct *statbuf)
+ const struct smb_filename *smb_fname,
+ struct vfs_statvfs_struct *statbuf)
{
return sys_statvfs(smb_fname->base_name, statbuf);
}
diff --git a/source3/printing/printspoolss.c b/source3/printing/printspoolss.c
index f02f584ad48..31117a4b743 100644
--- a/source3/printing/printspoolss.c
+++ b/source3/printing/printspoolss.c
@@ -243,6 +243,7 @@ NTSTATUS print_spool_open(files_struct *fsp,
fsp->oplock_type = NO_OPLOCK;
fsp->sent_oplock_break = NO_BREAK_SENT;
fsp->fsp_flags.is_directory = false;
+ fsp->fsp_flags.delete_on_close = false;
fsp->print_file = pf;
@@ -319,8 +320,7 @@ void print_spool_end(files_struct *fsp, enum file_close_type close_type)
WERROR werr;
struct dcerpc_binding_handle *b = NULL;
- if (fh_get_private_options(fsp->fh) &
- NTCREATEX_FLAG_DELETE_ON_CLOSE) {
+ if (fsp->fsp_flags.delete_on_close) {
int ret;
/*
diff --git a/source3/smbd/fd_handle.c b/source3/smbd/fd_handle.c
index e599181fe6b..87472909787 100644
--- a/source3/smbd/fd_handle.c
+++ b/source3/smbd/fd_handle.c
@@ -28,11 +28,7 @@ struct fd_handle {
/*
* NT Create options, but we only look at
* NTCREATEX_FLAG_DENY_DOS and
- * NTCREATEX_FLAG_DENY_FCB and
- * NTCREATEX_FLAG_DELETE_ON_CLOSE
- * for print files *only*, where
- * DELETE_ON_CLOSE is not stored in the share
- * mode database.
+ * NTCREATEX_FLAG_DENY_FCB.
*/
uint32_t private_options;
uint64_t gen_id;
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index 9917562d1de..166317f7965 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -1081,7 +1081,6 @@ bool is_share_read_only_for_token(const char *username,
NTSTATUS srvstr_push_fn(const char *base_ptr, uint16_t smb_flags2, void *dest,
const char *src, int dest_len, int flags, size_t *ret_len);
-ssize_t message_push_string(uint8_t **outbuf, const char *str, int flags);
/* The following definitions come from smbd/statcache.c */
@@ -1104,7 +1103,7 @@ bool reset_stat_cache( void );
/* The following definitions come from smbd/statvfs.c */
-int sys_statvfs(const char *path, vfs_statvfs_struct *statbuf);
+int sys_statvfs(const char *path, struct vfs_statvfs_struct *statbuf);
/* The following definitions come from smbd/trans2.c */
diff --git a/source3/smbd/smb1_process.c b/source3/smbd/smb1_process.c
index c041b48d88d..140884adb96 100644
--- a/source3/smbd/smb1_process.c
+++ b/source3/smbd/smb1_process.c
@@ -238,14 +238,17 @@ bool smb1_srv_send(struct smbXsrv_connection *xconn, char *buffer,
}
if (do_encrypt) {
- NTSTATUS status = srv_encrypt_buffer(xconn, buffer, &buf_out);
+ char *enc = NULL;
+ NTSTATUS status = srv_encrypt_buffer(xconn, buffer, &enc);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("send_smb: SMB encryption failed "
"on outgoing packet! Error %s\n",
nt_errstr(status) ));
+ SAFE_FREE(enc);
ret = -1;
goto out;
}
+ buf_out = enc;
}
len = smb_len_large(buf_out) + 4;
diff --git a/source3/smbd/smb1_reply.c b/source3/smbd/smb1_reply.c
index ec774e23ee3..140d03242c3 100644
--- a/source3/smbd/smb1_reply.c
+++ b/source3/smbd/smb1_reply.c
@@ -665,8 +665,10 @@ void reply_getatr(struct smb_request *req)
goto out;
}
- /* dos smetimes asks for a stat of "" - it returns a "hidden directory"
- under WfWg - weird! */
+ /*
+ * dos sometimes asks for a stat of "" - it returns a "hidden
+ * directory" under WfWg - weird!
+ */
if (*fname == '\0') {
mode = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY;
if (!CAN_WRITE(conn)) {
diff --git a/source3/smbd/smb1_trans2.c b/source3/smbd/smb1_trans2.c
index ea11788c783..8c3bafa3a00 100644
--- a/source3/smbd/smb1_trans2.c
+++ b/source3/smbd/smb1_trans2.c
@@ -2415,12 +2415,8 @@ static void call_trans2setfilepathinfo(connection_struct *conn,
* Doing a DELETE_ON_CLOSE should cancel a print job.
*/
if ((info_level == SMB_SET_FILE_DISPOSITION_INFO) && CVAL(pdata,0)) {
- uint32_t new_private_options =
- fh_get_private_options(fsp->fh);
- new_private_options |=
- NTCREATEX_FLAG_DELETE_ON_CLOSE;
- fh_set_private_options(fsp->fh,
- new_private_options);
+
+ fsp->fsp_flags.delete_on_close = true;
DEBUG(3,("call_trans2setfilepathinfo: "
"Cancelling print job (%s)\n",
diff --git a/source3/smbd/smb1_utils.c b/source3/smbd/smb1_utils.c
index 15afc3f5ef9..5092aa51929 100644
--- a/source3/smbd/smb1_utils.c
+++ b/source3/smbd/smb1_utils.c
@@ -121,3 +121,58 @@ bool send_keepalive(int client)
return(write_data(client,(char *)buf,4) == 4);
}
+
+/*******************************************************************
+ Add a string to the end of a smb_buf, adjusting bcc and smb_len.
+ Return the bytes added
+********************************************************************/
+
+ssize_t message_push_string(uint8_t **outbuf, const char *str, int flags)
+{
+ size_t buf_size = smb_len(*outbuf) + 4;
+ size_t grow_size;
+ size_t result = 0;
+ uint8_t *tmp;
+ NTSTATUS status;
+
+ /*
+ * We need to over-allocate, now knowing what srvstr_push will
+ * actually use. This is very generous by incorporating potential
+ * padding, the terminating 0 and at most 4 chars per UTF-16 code
+ * point.
+ */
+ grow_size = (strlen(str) + 2) * 4;
+
+ if (!(tmp = talloc_realloc(NULL, *outbuf, uint8_t,
+ buf_size + grow_size))) {
+ DEBUG(0, ("talloc failed\n"));
+ return -1;
+ }
+
+ status = srvstr_push((char *)tmp, SVAL(tmp, smb_flg2),
+ tmp + buf_size, str, grow_size, flags, &result);
+
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(0, ("srvstr_push failed\n"));
+ return -1;
+ }
+
+ /*
+ * Ensure we clear out the extra data we have
+ * grown the buffer by, but not written to.
+ */
+ if (buf_size + result < buf_size) {
+ return -1;
+ }
+ if (grow_size < result) {
+ return -1;
+ }
+
+ memset(tmp + buf_size + result, '\0', grow_size - result);
+
+ set_message_bcc((char *)tmp, smb_buflen(tmp) + result);
+
+ *outbuf = tmp;
+
+ return result;
+}
diff --git a/source3/smbd/smb1_utils.h b/source3/smbd/smb1_utils.h
index 2416a91148a..6f791e2ff80 100644
--- a/source3/smbd/smb1_utils.h
+++ b/source3/smbd/smb1_utils.h
@@ -25,6 +25,7 @@
#include "includes.h"
#include "vfs.h"
#include "proto.h"
+#include "lib/util/string_wrappers.h"
struct files_struct *fcb_or_dos_open(
struct smb_request *req,
@@ -33,5 +34,6 @@ struct files_struct *fcb_or_dos_open(
uint32_t create_options,
uint32_t private_flags);
bool send_keepalive(int client);
+ssize_t message_push_string(uint8_t **outbuf, const char *str, int flags);
#endif
diff --git a/source3/smbd/smb2_setinfo.c b/source3/smbd/smb2_setinfo.c
index d3c3ba63d6b..04fd9490fe9 100644
--- a/source3/smbd/smb2_setinfo.c
+++ b/source3/smbd/smb2_setinfo.c
@@ -439,10 +439,7 @@ static struct tevent_req *smbd_smb2_setinfo_send(TALLOC_CTX *mem_ctx,
if ((file_info_level == SMB_SET_FILE_DISPOSITION_INFO)
&& in_input_buffer.length >= 1
&& CVAL(in_input_buffer.data,0)) {
- uint32_t new_private_options =
- fh_get_private_options(fsp->fh);
- new_private_options |= NTCREATEX_FLAG_DELETE_ON_CLOSE;
- fh_set_private_options(fsp->fh, new_private_options);
+ fsp->fsp_flags.delete_on_close = true;
DEBUG(3,("smbd_smb2_setinfo_send: "
"Cancelling print job (%s)\n",
diff --git a/source3/smbd/smb2_trans2.c b/source3/smbd/smb2_trans2.c
index 77bcfe33e13..cc6dc3adcf7 100644
--- a/source3/smbd/smb2_trans2.c
+++ b/source3/smbd/smb2_trans2.c
@@ -2599,7 +2599,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
case SMB_QUERY_POSIX_FS_INFO:
{
int rc;
- vfs_statvfs_struct svfs;
+ struct vfs_statvfs_struct svfs;
if (!lp_smb1_unix_extensions()) {
return NT_STATUS_INVALID_LEVEL;
diff --git a/source3/smbd/srvstr.c b/source3/smbd/srvstr.c
index 6ea3ea48a59..5298ea735b3 100644
--- a/source3/smbd/srvstr.c
+++ b/source3/smbd/srvstr.c
@@ -76,58 +76,3 @@ NTSTATUS srvstr_push_fn(const char *base_ptr, uint16_t smb_flags2, void *dest,
}
return status;
}
-
-/*******************************************************************
- Add a string to the end of a smb_buf, adjusting bcc and smb_len.
- Return the bytes added
-********************************************************************/
-
-ssize_t message_push_string(uint8_t **outbuf, const char *str, int flags)
-{
- size_t buf_size = smb_len(*outbuf) + 4;
- size_t grow_size;
- size_t result = 0;
- uint8_t *tmp;
- NTSTATUS status;
-
- /*
- * We need to over-allocate, now knowing what srvstr_push will
- * actually use. This is very generous by incorporating potential
- * padding, the terminating 0 and at most 4 chars per UTF-16 code
- * point.
- */
- grow_size = (strlen(str) + 2) * 4;
-
- if (!(tmp = talloc_realloc(NULL, *outbuf, uint8_t,
- buf_size + grow_size))) {
- DEBUG(0, ("talloc failed\n"));
- return -1;
- }
-
- status = srvstr_push((char *)tmp, SVAL(tmp, smb_flg2),
- tmp + buf_size, str, grow_size, flags, &result);
-
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("srvstr_push failed\n"));
- return -1;
- }
-
- /*
- * Ensure we clear out the extra data we have
- * grown the buffer by, but not written to.
- */
- if (buf_size + result < buf_size) {
- return -1;
- }
- if (grow_size < result) {
- return -1;
- }
-
- memset(tmp + buf_size + result, '\0', grow_size - result);
-
- set_message_bcc((char *)tmp, smb_buflen(tmp) + result);
-
- *outbuf = tmp;
-
- return result;
-}
diff --git a/source3/smbd/statvfs.c b/source3/smbd/statvfs.c
index aca6752c7fb..981e7a5ba79 100644
--- a/source3/smbd/statvfs.c
+++ b/source3/smbd/statvfs.c
@@ -115,7 +115,7 @@ static int bsd_statvfs(const char *path, vfs_statvfs_struct *statbuf)
return ret;
}
#elif defined(STAT_STATVFS) && defined(HAVE_FSID_INT)
-static int posix_statvfs(const char *path, vfs_statvfs_struct *statbuf)
+static int posix_statvfs(const char *path, struct vfs_statvfs_struct *statbuf)
{
struct statvfs statvfs_buf;
int result;
@@ -164,7 +164,7 @@ static int posix_statvfs(const char *path, vfs_statvfs_struct *statbuf)
between LSB and FreeBSD/POSIX.1 (IEEE Std 1003.1-2001) we need to abstract the interface
so that particular OS would use its preferred interface.
*/
-int sys_statvfs(const char *path, vfs_statvfs_struct *statbuf)
+int sys_statvfs(const char *path, struct vfs_statvfs_struct *statbuf)
{
#if defined(BSD_STYLE_STATVFS)
return bsd_statvfs(path, statbuf);
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index 75ecdf53968..fe855045fa8 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -773,10 +773,6 @@ static void child_process_request(struct winbindd_child *child,
/* Process command */
state->response->result = winbindd_dual_ndrcmd(domain, state);
-
- DEBUG(1, ("child_process_request: unknown request fn number %d\n",
- (int)state->request->cmd));
- state->response->result = WINBINDD_ERROR;
}
void setup_child(struct winbindd_domain *domain, struct winbindd_child *child,
diff --git a/source4/rpc_server/lsa/dcesrv_lsa.c b/source4/rpc_server/lsa/dcesrv_lsa.c
index 4101d6ddd34..185e0044de1 100644
--- a/source4/rpc_server/lsa/dcesrv_lsa.c
+++ b/source4/rpc_server/lsa/dcesrv_lsa.c
@@ -1673,7 +1673,6 @@ static NTSTATUS get_tdo(struct ldb_context *sam, TALLOC_CTX *mem_ctx,
};
char *dns = NULL;
char *nbn = NULL;
- char *sidstr = NULL;
char *filter;
int ret;
@@ -1685,49 +1684,32 @@ static NTSTATUS get_tdo(struct ldb_context *sam, TALLOC_CTX *mem_ctx,
filter = talloc_strdup(mem_ctx,
"(objectclass=trustedDomain)");
}
- if (!filter) {
- return NT_STATUS_NO_MEMORY;
- }
if (dns_domain) {
dns = ldb_binary_encode_string(mem_ctx, dns_domain);
if (!dns) {
return NT_STATUS_NO_MEMORY;
}
- filter = talloc_asprintf_append(filter,
- "(trustPartner=%s)", dns);
- if (!filter) {
- return NT_STATUS_NO_MEMORY;
- }
+ talloc_asprintf_addbuf(&filter, "(trustPartner=%s)", dns);
}
if (netbios) {
nbn = ldb_binary_encode_string(mem_ctx, netbios);
if (!nbn) {
return NT_STATUS_NO_MEMORY;
}
- filter = talloc_asprintf_append(filter,
- "(flatname=%s)", nbn);
- if (!filter) {
- return NT_STATUS_NO_MEMORY;
- }
+ talloc_asprintf_addbuf(&filter, "(flatname=%s)", nbn);
}
if (sid) {
- sidstr = dom_sid_string(mem_ctx, sid);
- if (!sidstr) {
- return NT_STATUS_INVALID_PARAMETER;
- }
- filter = talloc_asprintf_append(filter,
- "(securityIdentifier=%s)",
- sidstr);
- if (!filter) {
- return NT_STATUS_NO_MEMORY;
- }
+ struct dom_sid_buf buf;
+ char *sidstr = dom_sid_str_buf(sid, &buf);
+ talloc_asprintf_addbuf(
+ &filter, "(securityIdentifier=%s)", sidstr);
}
if (dns_domain || netbios || sid) {
- filter = talloc_asprintf_append(filter, "))");
- if (!filter) {
- return NT_STATUS_NO_MEMORY;
- }
+ talloc_asprintf_addbuf(&filter, "))");
+ }
+ if (filter == NULL) {
+ return NT_STATUS_NO_MEMORY;
}
ret = gendb_search(sam, mem_ctx, basedn, msgs, attrs, "%s", filter);
--
Samba Shared Repository
More information about the samba-cvs
mailing list