[SCM] Samba Shared Repository - branch v4-0-test updated
Karolin Seeger
kseeger at samba.org
Wed Feb 27 05:22:05 MST 2013
The branch, v4-0-test has been updated
via 51e2615 s4-libcli: Check return value of smbcli_request_setup(). Reviewed-by: Alexander Bokovoy <ab at samba.org>
via f589262 pyauth: Check return value of lpcfg_from_py_object(). Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 56af551 s4-libcli: Check return code of smbcli_request_setup(). Reviewed-by: Alexander Bokovoy <ab at samba.org>
via dc04531 librpc: Add NULL check for ndr functions for epm bindings.
via a925c14 s3-tldap: Make sure we don't deref a null pointer. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 5114983 nmbd: Fix request data data processing.
via 5d401e5 libsmb: Fix possible null pointer dereference. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 72e902a pdb: Fix array overrun by one. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 55fdc89 s3-spoolss: Don't leak memory. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 5eaca8f s3-rpc_server: Make sure that fd is really closed on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via bd76950 lib-util: Don't leak file descriptor on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 22928b0 s3-vfs: Don't leak file descriptor on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 7e9cfa8 s3-libsmb: Don't leak memory on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 53538f6 winbind: Don't leak centry memory. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 7d2d82a winbind: Don't leak memory on return. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 2805032 s3-smbd: Don't leak subcntarr array. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 6b9a239 s3-vfs: Don't leak file descriptor. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 3461b09 s3-param: Don't leak file descriptor. Reviewed-by: Alexander Bokovoy <ab at samba.org>
via 2b19732 s3-lsasd: Don't leak file descriptors. Reviewed-by: Alexander Bokovoy <ab at samba.org>
from 20cb7de Fix bug #9674 - Samba denies owner Read Control when there is a DENY entry while W2K08 does not.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test
- Log -----------------------------------------------------------------
commit 51e2615473110637f574f11f96c6ce2483eaf021
Author: Andreas Schneider <asn at samba.org>
Date: Tue Feb 19 09:00:51 2013 +0100
s4-libcli: Check return value of smbcli_request_setup(). Reviewed-by: Alexander Bokovoy <ab at samba.org>
The last 7 patches address bug #9687 - Fix several possible null pointer
dereferences.
Autobuild-User(v4-0-test): Karolin Seeger <kseeger at samba.org>
Autobuild-Date(v4-0-test): Wed Feb 27 13:21:07 CET 2013 on sn-devel-104
commit f58926214da4e974d27b7a478e077848bce7982a
Author: Andreas Schneider <asn at samba.org>
Date: Tue Feb 19 08:58:00 2013 +0100
pyauth: Check return value of lpcfg_from_py_object(). Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 56af551da8066c5b21a0c3fba705543f76900355
Author: Andreas Schneider <asn at samba.org>
Date: Mon Feb 18 18:00:38 2013 +0100
s4-libcli: Check return code of smbcli_request_setup(). Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit dc04531aabbd4e965e156e3650860efe6a1ebb34
Author: Andreas Schneider <asn at samba.org>
Date: Mon Feb 18 17:32:28 2013 +0100
librpc: Add NULL check for ndr functions for epm bindings.
Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit a925c141ca753a67b480618f1ab8481de9f6d68a
Author: Andreas Schneider <asn at samba.org>
Date: Mon Feb 18 17:30:19 2013 +0100
s3-tldap: Make sure we don't deref a null pointer. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 511498348417ed5957c7d11463721f6cfc4f7b4b
Author: Andreas Schneider <asn at samba.org>
Date: Mon Feb 18 17:21:31 2013 +0100
nmbd: Fix request data data processing.
answers->rdata is an array and will never be NULL.
Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 5d401e55b772648cce0e96d8e6a2c8e6ebbd7875
Author: Andreas Schneider <asn at samba.org>
Date: Mon Feb 18 17:11:15 2013 +0100
libsmb: Fix possible null pointer dereference. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 72e902a8c70955709c91af51083471cae76b3672
Author: Andreas Schneider <asn at samba.org>
Date: Tue Feb 19 09:23:53 2013 +0100
pdb: Fix array overrun by one. Reviewed-by: Alexander Bokovoy <ab at samba.org>
Signed-off-by: Andreas Schneider <asn at samba.org>
Fix bug #9686 - Fix a possible buffer overrun in pdb_smbpasswd.
commit 55fdc89aac7a5344e77759821579d40cc67aa67b
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 09:06:51 2013 +0100
s3-spoolss: Don't leak memory. Reviewed-by: Alexander Bokovoy <ab at samba.org>
Fix bug #9685 - Fix a memory leak in spoolss rpc server.
commit 5eaca8f645398877a96aaff98783bf618e6e8bc6
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 10:52:37 2013 +0100
s3-rpc_server: Make sure that fd is really closed on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
The last 10 patches address bug #bug 9683 - Fix several resource (fd) leaks.
commit bd769506ab2caf2ad0740f2d59a15fce881b4c77
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 10:48:05 2013 +0100
lib-util: Don't leak file descriptor on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 22928b0cea0fce41efd211d28a14cbdbdb0c0d06
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 10:45:06 2013 +0100
s3-vfs: Don't leak file descriptor on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 7e9cfa83506b79e226067a9b7322665f40e9c594
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 10:38:13 2013 +0100
s3-libsmb: Don't leak memory on error. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 53538f66293c5d70ea03567dd229ecfecae9359e
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 09:51:43 2013 +0100
winbind: Don't leak centry memory. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 7d2d82a0841d04568eef36d6f40aecaa08d87fcf
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 09:41:55 2013 +0100
winbind: Don't leak memory on return. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 28050328554bcec999b2f97b501322be7661abd1
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 09:31:17 2013 +0100
s3-smbd: Don't leak subcntarr array. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 6b9a239c472ddbfcf04d6f5248c2ea23d1cb7454
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 09:16:25 2013 +0100
s3-vfs: Don't leak file descriptor. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 3461b095b0038e542ad0112f004c3eabafb8cc73
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 09:15:26 2013 +0100
s3-param: Don't leak file descriptor. Reviewed-by: Alexander Bokovoy <ab at samba.org>
commit 2b19732d8306959790285e5407e231ed0b9e6a3c
Author: Andreas Schneider <asn at samba.org>
Date: Wed Feb 20 09:11:48 2013 +0100
s3-lsasd: Don't leak file descriptors. Reviewed-by: Alexander Bokovoy <ab at samba.org>
-----------------------------------------------------------------------
Summary of changes:
lib/util/become_daemon.c | 1 +
librpc/rpc/binding.c | 7 +++++-
source3/lib/tldap.c | 3 ++
source3/libsmb/libsmb_server.c | 1 +
source3/libsmb/libsmb_xattr.c | 4 +-
source3/modules/vfs_aio_fork.c | 3 +-
source3/modules/vfs_crossrename.c | 4 ++-
source3/nmbd/nmbd_browsesync.c | 4 +-
source3/param/loadparm.c | 1 +
source3/passdb/pdb_smbpasswd.c | 7 +++--
source3/rpc_server/lsasd.c | 29 ++++++++++++++++----------
source3/rpc_server/rpc_sock_helper.c | 6 +++++
source3/rpc_server/spoolss/srv_spoolss_nt.c | 4 ++-
source3/smbd/lanman.c | 2 +-
source3/winbindd/winbindd_cache.c | 1 +
source3/winbindd/winbindd_cm.c | 3 ++
source4/auth/pyauth.c | 4 +++
source4/libcli/climessage.c | 9 ++++++++
source4/libcli/raw/clioplock.c | 3 ++
source4/libcli/raw/clitree.c | 3 ++
source4/libcli/raw/rawfsinfo.c | 3 ++
21 files changed, 78 insertions(+), 24 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/util/become_daemon.c b/lib/util/become_daemon.c
index 373927c..2ca0478 100644
--- a/lib/util/become_daemon.c
+++ b/lib/util/become_daemon.c
@@ -62,6 +62,7 @@ _PUBLIC_ void close_low_fds(bool stdin_too, bool stdout_too, bool stderr_too)
}
if (fd != i) {
DEBUG(0,("Didn't get file descriptor %d\n",i));
+ close(fd);
return;
}
}
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c
index f7fbbbc..2fa325f 100644
--- a/librpc/rpc/binding.c
+++ b/librpc/rpc/binding.c
@@ -424,7 +424,12 @@ _PUBLIC_ NTSTATUS dcerpc_floor_get_lhs_data(const struct epm_floor *epm_floor,
static DATA_BLOB dcerpc_floor_pack_lhs_data(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *syntax)
{
DATA_BLOB blob;
- struct ndr_push *ndr = ndr_push_init_ctx(mem_ctx);
+ struct ndr_push *ndr;
+
+ ndr = ndr_push_init_ctx(mem_ctx);
+ if (ndr == NULL) {
+ return data_blob_null;
+ }
ndr->flags |= LIBNDR_FLAG_NOALIGN;
diff --git a/source3/lib/tldap.c b/source3/lib/tldap.c
index 8b04d00..3782708 100644
--- a/source3/lib/tldap.c
+++ b/source3/lib/tldap.c
@@ -1370,6 +1370,9 @@ static bool tldap_push_filter_basic(struct tldap_context *ld,
dn++;
rule = strchr(dn, ':');
+ if (rule == NULL) {
+ return false;
+ }
if ((rule == dn + 1) || rule + 1 == e) {
/* malformed filter, contains "::" */
return false;
diff --git a/source3/libsmb/libsmb_server.c b/source3/libsmb/libsmb_server.c
index 99aa74c..3f86d50 100644
--- a/source3/libsmb/libsmb_server.c
+++ b/source3/libsmb/libsmb_server.c
@@ -812,6 +812,7 @@ SMBC_attr_server(TALLOC_CTX *ctx,
if (!NT_STATUS_IS_OK(nt_status)) {
errno = SMBC_errno(context, ipc_srv->cli);
cli_shutdown(ipc_srv->cli);
+ free(ipc_srv);
return NULL;
}
diff --git a/source3/libsmb/libsmb_xattr.c b/source3/libsmb/libsmb_xattr.c
index 03cdc34..c2ba61f 100644
--- a/source3/libsmb/libsmb_xattr.c
+++ b/source3/libsmb/libsmb_xattr.c
@@ -351,7 +351,7 @@ parse_ace(struct cli_state *ipc_cli,
goto done;
}
- for (v = standard_values; v->perm; v++) {
+ for (v = standard_values; v != NULL; v++) {
if (strcmp(tok, v->perm) == 0) {
amask = v->mask;
goto done;
@@ -363,7 +363,7 @@ parse_ace(struct cli_state *ipc_cli,
while(*p) {
bool found = False;
- for (v = special_values; v->perm; v++) {
+ for (v = special_values; v != NULL; v++) {
if (v->perm[0] == *p) {
amask |= v->mask;
found = True;
diff --git a/source3/modules/vfs_aio_fork.c b/source3/modules/vfs_aio_fork.c
index 3db336f..0e7259b 100644
--- a/source3/modules/vfs_aio_fork.c
+++ b/source3/modules/vfs_aio_fork.c
@@ -68,13 +68,12 @@ static struct mmap_area *mmap_area_init(TALLOC_CTX *mem_ctx, size_t size)
result->ptr = mmap(NULL, size, PROT_READ|PROT_WRITE,
MAP_SHARED|MAP_FILE, fd, 0);
+ close(fd);
if (result->ptr == MAP_FAILED) {
DEBUG(1, ("mmap failed: %s\n", strerror(errno)));
goto fail;
}
- close(fd);
-
result->size = size;
talloc_set_destructor(result, mmap_area_destructor);
diff --git a/source3/modules/vfs_crossrename.c b/source3/modules/vfs_crossrename.c
index 19a182c..9bb42b9 100644
--- a/source3/modules/vfs_crossrename.c
+++ b/source3/modules/vfs_crossrename.c
@@ -73,8 +73,10 @@ static int copy_reg(const char *source, const char *dest)
if((ifd = open (source, O_RDONLY, 0)) < 0)
return -1;
- if (unlink (dest) && errno != ENOENT)
+ if (unlink (dest) && errno != ENOENT) {
+ close(ifd);
return -1;
+ }
#ifdef O_NOFOLLOW
if((ofd = open (dest, O_WRONLY | O_CREAT | O_TRUNC | O_NOFOLLOW, 0600)) < 0 )
diff --git a/source3/nmbd/nmbd_browsesync.c b/source3/nmbd/nmbd_browsesync.c
index b56baed..03d0ada 100644
--- a/source3/nmbd/nmbd_browsesync.c
+++ b/source3/nmbd/nmbd_browsesync.c
@@ -194,7 +194,7 @@ static void domain_master_node_status_success(struct subnet_record *subrec,
/* Go through the list of names found at answers->rdata and look for
the first SERVER<0x20> name. */
- if(answers->rdata != NULL) {
+ if (answers->rdlength > 0) {
char *p = answers->rdata;
int numnames = CVAL(p, 0);
@@ -417,7 +417,7 @@ static void get_domain_master_name_node_status_success(struct subnet_record *sub
* the first WORKGROUP<0x1b> name.
*/
- if(answers->rdata != NULL) {
+ if (answers->rdlength > 0) {
char *p = answers->rdata;
int numnames = CVAL(p, 0);
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 0e1b019..cbcab78 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -4399,6 +4399,7 @@ static int process_usershare_file(const char *dir_name, const char *file_name, i
/* This must be a regular file, not a symlink, directory or
other strange filetype. */
if (!check_usershare_stat(fname, &sbuf)) {
+ close(fd);
goto out;
}
diff --git a/source3/passdb/pdb_smbpasswd.c b/source3/passdb/pdb_smbpasswd.c
index 0703ea4..83785c6 100644
--- a/source3/passdb/pdb_smbpasswd.c
+++ b/source3/passdb/pdb_smbpasswd.c
@@ -737,7 +737,8 @@ static bool mod_smbfilepwd_entry(struct smbpasswd_privates *smbpasswd_state, con
fstring user_name;
char *status;
- char linebuf[256];
+#define LINEBUF_SIZE 255
+ char linebuf[LINEBUF_SIZE + 1];
char readbuf[1024];
int c;
fstring ascii_p16;
@@ -792,7 +793,7 @@ static bool mod_smbfilepwd_entry(struct smbpasswd_privates *smbpasswd_state, con
linebuf[0] = '\0';
- status = fgets(linebuf, sizeof(linebuf), fp);
+ status = fgets(linebuf, LINEBUF_SIZE, fp);
if (status == NULL && ferror(fp)) {
pw_file_unlock(lockfd, &smbpasswd_state->pw_file_lock_depth);
fclose(fp);
@@ -1021,7 +1022,7 @@ This is no longer supported.!\n", pwd->smb_name));
dump_data(100, (uint8 *)ascii_p16, wr_len);
#endif
- if(wr_len > sizeof(linebuf)) {
+ if(wr_len > LINEBUF_SIZE) {
DEBUG(0, ("mod_smbfilepwd_entry: line to write (%d) is too long.\n", wr_len+1));
pw_file_unlock(lockfd,&smbpasswd_state->pw_file_lock_depth);
fclose(fp);
diff --git a/source3/rpc_server/lsasd.c b/source3/rpc_server/lsasd.c
index fd6c248..fc6823f 100644
--- a/source3/rpc_server/lsasd.c
+++ b/source3/rpc_server/lsasd.c
@@ -597,7 +597,7 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
TALLOC_CTX *tmp_ctx;
NTSTATUS status;
uint32_t i;
- int fd;
+ int fd = -1;
int rc;
bool ok = true;
@@ -640,8 +640,6 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
ok = false;
goto done;
}
- listen_fd[*listen_fd_size] = fd;
- (*listen_fd_size)++;
rc = listen(fd, pf_lsasd_cfg.max_allowed_clients);
if (rc == -1) {
@@ -650,14 +648,14 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
ok = false;
goto done;
}
+ listen_fd[*listen_fd_size] = fd;
+ (*listen_fd_size)++;
fd = create_named_pipe_socket("lsass");
if (fd < 0) {
ok = false;
goto done;
}
- listen_fd[*listen_fd_size] = fd;
- (*listen_fd_size)++;
rc = listen(fd, pf_lsasd_cfg.max_allowed_clients);
if (rc == -1) {
@@ -666,14 +664,14 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
ok = false;
goto done;
}
+ listen_fd[*listen_fd_size] = fd;
+ (*listen_fd_size)++;
fd = create_dcerpc_ncalrpc_socket("lsarpc");
if (fd < 0) {
ok = false;
goto done;
}
- listen_fd[*listen_fd_size] = fd;
- (*listen_fd_size)++;
rc = listen(fd, pf_lsasd_cfg.max_allowed_clients);
if (rc == -1) {
@@ -682,6 +680,9 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
ok = false;
goto done;
}
+ listen_fd[*listen_fd_size] = fd;
+ (*listen_fd_size)++;
+ fd = -1;
v = dcerpc_binding_vector_dup(tmp_ctx, v_orig);
if (v == NULL) {
@@ -734,8 +735,6 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
ok = false;
goto done;
}
- listen_fd[*listen_fd_size] = fd;
- (*listen_fd_size)++;
rc = listen(fd, pf_lsasd_cfg.max_allowed_clients);
if (rc == -1) {
@@ -744,6 +743,9 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
ok = false;
goto done;
}
+ listen_fd[*listen_fd_size] = fd;
+ (*listen_fd_size)++;
+ fd = -1;
v = dcerpc_binding_vector_dup(tmp_ctx, v_orig);
if (v == NULL) {
@@ -796,16 +798,18 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
ok = false;
goto done;
}
- listen_fd[*listen_fd_size] = fd;
- (*listen_fd_size)++;
rc = listen(fd, pf_lsasd_cfg.max_allowed_clients);
if (rc == -1) {
DEBUG(0, ("Failed to listen on netlogon ncalrpc - %s\n",
strerror(errno)));
+ close(fd);
ok = false;
goto done;
}
+ listen_fd[*listen_fd_size] = fd;
+ (*listen_fd_size)++;
+ fd = -1;
v = dcerpc_binding_vector_dup(tmp_ctx, v_orig);
if (v == NULL) {
@@ -837,6 +841,9 @@ static bool lsasd_create_sockets(struct tevent_context *ev_ctx,
}
done:
+ if (fd != -1) {
+ close(fd);
+ }
talloc_free(tmp_ctx);
return ok;
}
diff --git a/source3/rpc_server/rpc_sock_helper.c b/source3/rpc_server/rpc_sock_helper.c
index 198df90..dc88f25 100644
--- a/source3/rpc_server/rpc_sock_helper.c
+++ b/source3/rpc_server/rpc_sock_helper.c
@@ -63,6 +63,9 @@ NTSTATUS rpc_create_tcpip_sockets(const struct ndr_interface_table *iface,
fd = create_tcpip_socket(ifss, &p);
if (fd < 0 || p == 0) {
status = NT_STATUS_UNSUCCESSFUL;
+ if (fd != -1) {
+ close(fd);
+ }
goto done;
}
listen_fd[*listen_fd_size] = fd;
@@ -124,6 +127,9 @@ NTSTATUS rpc_create_tcpip_sockets(const struct ndr_interface_table *iface,
fd = create_tcpip_socket(&ss, &p);
if (fd < 0 || p == 0) {
status = NT_STATUS_UNSUCCESSFUL;
+ if (fd != -1) {
+ close(fd);
+ }
goto done;
}
listen_fd[*listen_fd_size] = fd;
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index 1b3a16f..ae3e991 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -4857,8 +4857,10 @@ static WERROR string_array_from_driver_info(TALLOC_CTX *mem_ctx,
&array, &num_strings);
}
- if (presult) {
+ if (presult != NULL) {
*presult = array;
+ } else {
+ talloc_free(array);
}
return WERR_OK;
diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
index d54e1d5..b5598a4 100644
--- a/source3/smbd/lanman.c
+++ b/source3/smbd/lanman.c
@@ -1159,8 +1159,8 @@ static bool api_DosPrintQEnum(struct smbd_server_connection *sconn,
}
}
- SAFE_FREE(subcntarr);
out:
+ SAFE_FREE(subcntarr);
*rdata_len = desc.usedlen;
*rparam_len = 8;
*rparam = smb_realloc_limit(*rparam,*rparam_len);
diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c
index 517a302..6ae46db 100644
--- a/source3/winbindd/winbindd_cache.c
+++ b/source3/winbindd/winbindd_cache.c
@@ -2140,6 +2140,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain,
} else {
/* something's definitely wrong */
result = centry->status;
+ centry_free(centry);
goto error;
}
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index 33eeb32..38c2f7d 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -1013,6 +1013,9 @@ static NTSTATUS cm_prepare_connection(const struct winbindd_domain *domain,
if ( !(*cli)->domain[0] ) {
result = cli_set_domain((*cli), domain->name);
if (!NT_STATUS_IS_OK(result)) {
+ SAFE_FREE(ipc_username);
+ SAFE_FREE(ipc_domain);
+ SAFE_FREE(ipc_password);
return result;
}
}
diff --git a/source4/auth/pyauth.c b/source4/auth/pyauth.c
index f07fa78..437e671 100644
--- a/source4/auth/pyauth.c
+++ b/source4/auth/pyauth.c
@@ -245,6 +245,10 @@ static PyObject *py_auth_context_new(PyTypeObject *type, PyObject *args, PyObjec
}
lp_ctx = lpcfg_from_py_object(mem_ctx, py_lp_ctx);
+ if (lp_ctx == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
ev = s4_event_context_init(mem_ctx);
if (ev == NULL) {
diff --git a/source4/libcli/climessage.c b/source4/libcli/climessage.c
index 5ed0e8e..3e9808c 100644
--- a/source4/libcli/climessage.c
+++ b/source4/libcli/climessage.c
@@ -33,6 +33,9 @@ bool smbcli_message_start(struct smbcli_tree *tree, const char *host, const char
struct smbcli_request *req;
req = smbcli_request_setup(tree, SMBsendstrt, 0, 0);
+ if (req == NULL) {
+ return false;
+ }
smbcli_req_append_string(req, username, STR_TERMINATE);
smbcli_req_append_string(req, host, STR_TERMINATE);
if (!smbcli_request_send(req) ||
@@ -57,6 +60,9 @@ bool smbcli_message_text(struct smbcli_tree *tree, char *msg, int len, int grp)
struct smbcli_request *req;
req = smbcli_request_setup(tree, SMBsendtxt, 1, 0);
+ if (req == NULL) {
+ return false;
+ }
SSVAL(req->out.vwv, VWV(0), grp);
smbcli_req_append_bytes(req, (const uint8_t *)msg, len);
@@ -80,6 +86,9 @@ bool smbcli_message_end(struct smbcli_tree *tree, int grp)
struct smbcli_request *req;
req = smbcli_request_setup(tree, SMBsendend, 1, 0);
+ if (req == NULL) {
+ return false;
+ }
SSVAL(req->out.vwv, VWV(0), grp);
if (!smbcli_request_send(req) ||
diff --git a/source4/libcli/raw/clioplock.c b/source4/libcli/raw/clioplock.c
index 396ab96..6c04843 100644
--- a/source4/libcli/raw/clioplock.c
+++ b/source4/libcli/raw/clioplock.c
@@ -30,6 +30,9 @@ _PUBLIC_ bool smbcli_oplock_ack(struct smbcli_tree *tree, uint16_t fnum, uint16_
struct smbcli_request *req;
req = smbcli_request_setup(tree, SMBlockingX, 8, 0);
+ if (req == NULL) {
+ return false;
+ }
SSVAL(req->out.vwv,VWV(0),0xFF);
SSVAL(req->out.vwv,VWV(1),0);
diff --git a/source4/libcli/raw/clitree.c b/source4/libcli/raw/clitree.c
index 1c3321e..11be548 100644
--- a/source4/libcli/raw/clitree.c
+++ b/source4/libcli/raw/clitree.c
@@ -168,6 +168,9 @@ _PUBLIC_ NTSTATUS smb_tree_disconnect(struct smbcli_tree *tree)
if (!tree) return NT_STATUS_OK;
req = smbcli_request_setup(tree, SMBtdis, 0, 0);
+ if (req == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
if (smbcli_request_send(req)) {
(void) smbcli_request_receive(req);
diff --git a/source4/libcli/raw/rawfsinfo.c b/source4/libcli/raw/rawfsinfo.c
index 08f68dd..9c03e14 100644
--- a/source4/libcli/raw/rawfsinfo.c
+++ b/source4/libcli/raw/rawfsinfo.c
@@ -33,6 +33,9 @@ static struct smbcli_request *smb_raw_dskattr_send(struct smbcli_tree *tree,
struct smbcli_request *req;
req = smbcli_request_setup(tree, SMBdskattr, 0, 0);
+ if (req == NULL) {
+ return NULL;
+ }
if (!smbcli_request_send(req)) {
smbcli_request_destroy(req);
--
Samba Shared Repository
More information about the samba-cvs
mailing list