The branch, master has been updated via 6a081e9 tevent: Fix tutorial reference via d672535 libcli: Fix improper use of tevent_req_simple_recv_ntstatus via 2e59d6c libsmb: Remove an unnecessary variable assignment via f584474 libsmb: Avoid an unnecessary "else" via adc3ac9 smbd: Fix CID 1035550 Structurally dead code via 8420d1c smbd: Fix nonblank line endings via 68e6e7e lib: Remove unused "get_peer_name" via 52c5175 lib: Remove unused "client_name" via 2175024 lsa4: Fix an set but unused variable warning via 55c3f8e lsa4: Remove an unused variable via c17e5bd s3:rpcclient: fix compiler warnings via a560d1d s3:pylibsmb: remove compiler warnings via 82e969b s4:wrepl_out_helpers.c: avoid talloc_reference() in most cases via 6b99779 s4:torture/rpc: s/getgroups/getgr to avoid compiler warnings via 72dec3c s4:nbt_server: avoid talloc_reference() via 270aee5 s4:torture/rpc/samsync: avoid talloc_reference() via fd54ffa s4:libcli: avoid talloc_reference() in finddcs_nbt_send() via ae6166a s4:librpc: avoid talloc_reference() in dcerpc_epm_map_binding_send() via b055b31 auth/credentials: make sure cli_credentials_get_nt_hash() always returns a talloc object from 20b64ea waf: replace dependency to libintl with samba_intl
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 6a081e991923b7d089be4a5cdb1a351c2e863db1 Author: Volker Lendecke <v...@samba.org> Date: Tue Jul 30 14:37:16 2013 +0200 tevent: Fix tutorial reference Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Mon Aug 12 09:17:10 CEST 2013 on sn-devel-104 commit d672535551e794574d25a3f553011af5fbb7a0a9 Author: Volker Lendecke <v...@samba.org> Date: Sat Jun 15 20:39:53 2013 +0200 libcli: Fix improper use of tevent_req_simple_recv_ntstatus tevent_req_simple_recv_ntstatus is just for the simple return without anything to do after it. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 2e59d6c37002734887f9d26be2ea078775dc0c1e Author: Volker Lendecke <v...@samba.org> Date: Sun Jun 9 18:02:27 2013 +0200 libsmb: Remove an unnecessary variable assignment Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit f584474d7dc1fdb4a778eb1ede8c5321e606341b Author: Volker Lendecke <v...@samba.org> Date: Sun Jun 9 11:41:32 2013 +0200 libsmb: Avoid an unnecessary "else" Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit adc3ac9ecdd7000c629b74d6477bbd59124cc7d2 Author: Volker Lendecke <v...@samba.org> Date: Sat Jun 22 18:43:00 2013 +0200 smbd: Fix CID 1035550 Structurally dead code Just a single ctl_code from my point of view is okay with an if(). All other cases are handled behind the VFS these days. The dead code was the last tevent_req_nterror and post routines. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 8420d1c8ee031bb48d3bd845515355251a799633 Author: Volker Lendecke <v...@samba.org> Date: Sat Jun 22 18:40:31 2013 +0200 smbd: Fix nonblank line endings Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 68e6e7e8e894312efb6d550d57fcafcd09b5fe4d Author: Volker Lendecke <v...@samba.org> Date: Fri Jun 21 18:33:56 2013 +0200 lib: Remove unused "get_peer_name" Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 52c51752e8e8d64f4332cae990688b5b11f1b422 Author: Volker Lendecke <v...@samba.org> Date: Thu Jun 20 13:49:45 2013 +0200 lib: Remove unused "client_name" Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 2175024f9750d858847c2c0ad1c84ea9a14e0e02 Author: Volker Lendecke <v...@samba.org> Date: Fri Jun 21 18:11:30 2013 +0200 lsa4: Fix an set but unused variable warning Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 55c3f8efc3982a49ba154bcb9b797aede0152227 Author: Volker Lendecke <v...@samba.org> Date: Fri Jun 21 18:11:07 2013 +0200 lsa4: Remove an unused variable Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit c17e5bd43ca54fdf34563b275a75937079e7adb8 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Aug 9 10:23:12 2013 +0200 s3:rpcclient: fix compiler warnings Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit a560d1d485b0958e2ad49e5dcc50692f474ef757 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Aug 9 10:15:48 2013 +0200 s3:pylibsmb: remove compiler warnings Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 82e969b3c77fa62561c3ecbae2e3d0183e94b3e4 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Aug 8 19:16:26 2013 +0200 s4:wrepl_out_helpers.c: avoid talloc_reference() in most cases Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 6b9977916ec6de2ae4b224e3dcbc6c1f3e7b207e Author: Stefan Metzmacher <me...@samba.org> Date: Thu Aug 8 19:10:29 2013 +0200 s4:torture/rpc: s/getgroups/getgr to avoid compiler warnings Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 72dec3c1f169d77a0456000d4fa512e8bd2d9007 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Aug 8 18:38:12 2013 +0200 s4:nbt_server: avoid talloc_reference() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit 270aee56f11a2bf6c1d1e2c3c96767278fd22743 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Aug 8 18:33:54 2013 +0200 s4:torture/rpc/samsync: avoid talloc_reference() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit fd54ffa66c194bab5cb2c1343ef063bf9e4eedc6 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Aug 8 18:21:13 2013 +0200 s4:libcli: avoid talloc_reference() in finddcs_nbt_send() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit ae6166a3c10d3ce9f9a0d08dcbfcc8afd72ca461 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Aug 8 13:56:51 2013 +0200 s4:librpc: avoid talloc_reference() in dcerpc_epm_map_binding_send() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> commit b055b3118d9c2159e9d5a42830328cfc103f9555 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Aug 9 10:15:05 2013 +0200 auth/credentials: make sure cli_credentials_get_nt_hash() always returns a talloc object Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Andrew Bartlett <abart...@samba.org> ----------------------------------------------------------------------- Summary of changes: auth/credentials/credentials.c | 19 +++++-- auth/credentials/credentials.h | 4 +- lib/tevent/doc/tevent_request.dox | 8 +-- lib/util/util_net.h | 1 - libcli/smb/smbXcli_base.c | 7 ++- source3/include/proto.h | 2 - source3/lib/util_sock.c | 84 ------------------------------ source3/libsmb/pylibsmb.c | 9 ++-- source3/modules/vfs_default.c | 12 ++-- source3/rpcclient/rpcclient.c | 13 +++-- source3/smbd/smb2_ioctl_named_pipe.c | 67 ++++++++++------------- source4/libcli/finddcs_cldap.c | 16 ++++-- source4/libcli/finddcs_nbt.c | 2 +- source4/librpc/rpc/dcerpc_connect.c | 15 ++++- source4/librpc/rpc/dcerpc_sock.c | 14 ++++-- source4/librpc/rpc/dcerpc_util.c | 18 +++++-- source4/nbt_server/wins/wins_dns_proxy.c | 5 +- source4/nbt_server/wins/winsdb.c | 2 +- source4/nbt_server/wins/winsserver.c | 4 +- source4/rpc_server/lsa/dcesrv_lsa.c | 11 ++--- source4/torture/rpc/samsync.c | 37 ++++++------- source4/wrepl_server/wrepl_out_helpers.c | 21 ++++++- 22 files changed, 162 insertions(+), 209 deletions(-) Changeset truncated at 500 lines: diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c index be497bc..57a7c0b 100644 --- a/auth/credentials/credentials.c +++ b/auth/credentials/credentials.c @@ -471,8 +471,8 @@ _PUBLIC_ bool cli_credentials_set_old_password(struct cli_credentials *cred, * @param cred credentials context * @retval If set, the cleartext password, otherwise NULL */ -_PUBLIC_ const struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *cred, - TALLOC_CTX *mem_ctx) +_PUBLIC_ struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *cred, + TALLOC_CTX *mem_ctx) { const char *password = cli_credentials_get_password(cred); @@ -481,13 +481,22 @@ _PUBLIC_ const struct samr_Password *cli_credentials_get_nt_hash(struct cli_cred if (!nt_hash) { return NULL; } - + E_md4hash(password, nt_hash->hash); return nt_hash; - } else { - return cred->nt_hash; + } else if (cred->nt_hash != NULL) { + struct samr_Password *nt_hash = talloc(mem_ctx, struct samr_Password); + if (!nt_hash) { + return NULL; + } + + *nt_hash = *cred->nt_hash; + + return nt_hash; } + + return NULL; } /** diff --git a/auth/credentials/credentials.h b/auth/credentials/credentials.h index cb09dc3..766a513 100644 --- a/auth/credentials/credentials.h +++ b/auth/credentials/credentials.h @@ -141,8 +141,8 @@ bool cli_credentials_set_password(struct cli_credentials *cred, enum credentials_obtained obtained); struct cli_credentials *cli_credentials_init_anon(TALLOC_CTX *mem_ctx); void cli_credentials_parse_string(struct cli_credentials *credentials, const char *data, enum credentials_obtained obtained); -const struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *cred, - TALLOC_CTX *mem_ctx); +struct samr_Password *cli_credentials_get_nt_hash(struct cli_credentials *cred, + TALLOC_CTX *mem_ctx); bool cli_credentials_set_realm(struct cli_credentials *cred, const char *val, enum credentials_obtained obtained); diff --git a/lib/tevent/doc/tevent_request.dox b/lib/tevent/doc/tevent_request.dox index 3358cfb..7fcfb55 100644 --- a/lib/tevent/doc/tevent_request.dox +++ b/lib/tevent/doc/tevent_request.dox @@ -182,10 +182,8 @@ tevent_wakeup_recv() ) @image html tevent_subrequest.png -Comprehensive example containing features from this chapter is especially by -reason of nested subrequests very long and therefore it is located as an -example on the attached CD. Description and explanation is placed within the -source code itself (subrequest.c) and enclosed file README. The example is -available <a href="subrequest_example.zip">here</a>. +A comprehensive example of nested subrequests can be found in the file +echo_server.c. It implements a complete, self-contained echo server with no +dependencies but libevent and libtalloc. */ diff --git a/lib/util/util_net.h b/lib/util/util_net.h index 215a657..2f1beff 100644 --- a/lib/util/util_net.h +++ b/lib/util/util_net.h @@ -106,7 +106,6 @@ char *print_sockaddr(char *dest, const struct sockaddr_storage *psa); char *print_canonical_sockaddr(TALLOC_CTX *ctx, const struct sockaddr_storage *pss); -const char *client_name(int fd); int get_socket_port(int fd); const char *client_socket_addr(int fd, char *addr, size_t addr_len); diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c index 5a5828a..7397f83 100644 --- a/libcli/smb/smbXcli_base.c +++ b/libcli/smb/smbXcli_base.c @@ -1562,8 +1562,7 @@ static void smbXcli_conn_received(struct tevent_req *subreq) if (subreq != conn->read_smb_req) { DEBUG(1, ("Internal error: cli_smb_received called with " "unexpected subreq\n")); - status = NT_STATUS_INTERNAL_ERROR; - smbXcli_conn_disconnect(conn, status); + smbXcli_conn_disconnect(conn, NT_STATUS_INTERNAL_ERROR); TALLOC_FREE(frame); return; } @@ -1587,7 +1586,9 @@ static void smbXcli_conn_received(struct tevent_req *subreq) * tevent_req_done(). */ return; - } else if (!NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) { + } + + if (!NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) { /* * We got an error, so notify all pending requests */ diff --git a/source3/include/proto.h b/source3/include/proto.h index a9270fc..13b1350 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -571,7 +571,6 @@ char *print_sockaddr(char *dest, const struct sockaddr_storage *psa); char *print_canonical_sockaddr(TALLOC_CTX *ctx, const struct sockaddr_storage *pss); -const char *client_name(int fd); int get_socket_port(int fd); const char *client_addr(int fd, char *addr, size_t addrlen); const char *client_socket_addr(int fd, char *addr, size_t addr_len); @@ -620,7 +619,6 @@ struct tevent_req *open_socket_out_defer_send(TALLOC_CTX *mem_ctx, int timeout); NTSTATUS open_socket_out_defer_recv(struct tevent_req *req, int *pfd); int open_udp_socket(const char *host, int port); -const char *get_peer_name(int fd, bool force_lookup); const char *get_peer_addr(int fd, char *addr, size_t addr_len); struct tsocket_address; diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 54286b3..a35ae97 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -29,11 +29,6 @@ #include "../lib/util/tevent_ntstatus.h" #include "../lib/tsocket/tsocket.h" -const char *client_name(int fd) -{ - return get_peer_name(fd,false); -} - const char *client_addr(int fd, char *addr, size_t addrlen) { return get_peer_addr(fd,addr,addrlen); @@ -1028,85 +1023,6 @@ static void store_nc(const struct name_addr_pair *nc) } /******************************************************************* - Return the DNS name of the remote end of a socket. -******************************************************************/ - -const char *get_peer_name(int fd, bool force_lookup) -{ - struct name_addr_pair nc; - char addr_buf[INET6_ADDRSTRLEN]; - struct sockaddr_storage ss; - socklen_t length = sizeof(ss); - const char *p; - int ret; - char name_buf[MAX_DNS_NAME_LENGTH]; - char tmp_name[MAX_DNS_NAME_LENGTH]; - - /* reverse lookups can be *very* expensive, and in many - situations won't work because many networks don't link dhcp - with dns. To avoid the delay we avoid the lookup if - possible */ - if (!lp_hostname_lookups() && (force_lookup == false)) { - length = sizeof(nc.ss); - nc.name = get_peer_addr_internal(fd, addr_buf, sizeof(addr_buf), - (struct sockaddr *)&nc.ss, &length); - store_nc(&nc); - lookup_nc(&nc); - return nc.name ? nc.name : "UNKNOWN"; - } - - lookup_nc(&nc); - - memset(&ss, '\0', sizeof(ss)); - p = get_peer_addr_internal(fd, addr_buf, sizeof(addr_buf), (struct sockaddr *)&ss, &length); - - /* it might be the same as the last one - save some DNS work */ - if (sockaddr_equal((struct sockaddr *)&ss, (struct sockaddr *)&nc.ss)) { - return nc.name ? nc.name : "UNKNOWN"; - } - - /* Not the same. We need to lookup. */ - if (fd == -1) { - return "UNKNOWN"; - } - - /* Look up the remote host name. */ - ret = sys_getnameinfo((struct sockaddr *)&ss, - length, - name_buf, - sizeof(name_buf), - NULL, - 0, - 0); - - if (ret) { - DEBUG(1,("get_peer_name: getnameinfo failed " - "for %s with error %s\n", - p, - gai_strerror(ret))); - strlcpy(name_buf, p, sizeof(name_buf)); - } else { - if (!matchname(name_buf, (struct sockaddr *)&ss, length)) { - DEBUG(0,("Matchname failed on %s %s\n",name_buf,p)); - strlcpy(name_buf,"UNKNOWN",sizeof(name_buf)); - } - } - - strlcpy(tmp_name, name_buf, sizeof(tmp_name)); - alpha_strcpy(name_buf, tmp_name, "_-.", sizeof(name_buf)); - if (strstr(name_buf,"..")) { - strlcpy(name_buf, "UNKNOWN", sizeof(name_buf)); - } - - nc.name = name_buf; - nc.ss = ss; - - store_nc(&nc); - lookup_nc(&nc); - return nc.name ? nc.name : "UNKNOWN"; -} - -/******************************************************************* Return the IP addr of the remote end of a socket as a string. ******************************************************************/ diff --git a/source3/libsmb/pylibsmb.c b/source3/libsmb/pylibsmb.c index ae0d694..533df67 100644 --- a/source3/libsmb/pylibsmb.c +++ b/source3/libsmb/pylibsmb.c @@ -51,19 +51,20 @@ static PyTypeObject *get_pytype(const char *module, const char *type) } /* - * We're using "const char **" for keywords, + * We're using "const char * const *" for keywords, * PyArg_ParseTupleAndKeywords expects a "char **". Confine the * inevitable warnings to just one place. */ static int ParseTupleAndKeywords(PyObject *args, PyObject *kw, - const char *format, const char **keywords, + const char *format, const char * const *keywords, ...) { + char **_keywords = discard_const_p(char *, keywords); va_list a; int ret; va_start(a, keywords); ret = PyArg_VaParseTupleAndKeywords(args, kw, format, - (char **)keywords, a); + _keywords, a); va_end(a); return ret; } @@ -448,7 +449,7 @@ static int py_cli_state_init(struct py_cli_state *self, PyObject *args, cli_credentials_get_password(cli_creds), 0, 0); if (!py_tevent_req_wait_exc(self->ev, req)) { - return NULL; + return -1; } status = cli_full_connection_recv(req, &self->cli); TALLOC_FREE(req); diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 304ef37..edac0de 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -1033,10 +1033,10 @@ static NTSTATUS vfswrap_fsctl(struct vfs_handle_struct *handle, } status = file_set_sparse(handle->conn, fsp, set_sparse); - + DEBUG(NT_STATUS_IS_OK(status) ? 10 : 9, ("FSCTL_SET_SPARSE: fname[%s] set[%u] - %s\n", - smb_fname_str_dbg(fsp->fsp_name), set_sparse, + smb_fname_str_dbg(fsp->fsp_name), set_sparse, nt_errstr(status))); return status; @@ -1125,17 +1125,17 @@ static NTSTATUS vfswrap_fsctl(struct vfs_handle_struct *handle, if (SMB_VFS_GET_SHADOW_COPY_DATA(fsp, shadow_data, labels)!=0) { TALLOC_FREE(shadow_data); if (errno == ENOSYS) { - DEBUG(5,("FSCTL_GET_SHADOW_COPY_DATA: connectpath %s, not supported.\n", + DEBUG(5,("FSCTL_GET_SHADOW_COPY_DATA: connectpath %s, not supported.\n", fsp->conn->connectpath)); return NT_STATUS_NOT_SUPPORTED; } else { - DEBUG(0,("FSCTL_GET_SHADOW_COPY_DATA: connectpath %s, failed.\n", + DEBUG(0,("FSCTL_GET_SHADOW_COPY_DATA: connectpath %s, failed.\n", fsp->conn->connectpath)); return NT_STATUS_UNSUCCESSFUL; } } - labels_data_count = (shadow_data->num_volumes * 2 * + labels_data_count = (shadow_data->num_volumes * 2 * sizeof(SHADOW_COPY_LABEL)) + 2; if (!labels) { @@ -1325,7 +1325,7 @@ static NTSTATUS vfswrap_fsctl(struct vfs_handle_struct *handle, } default: - /* + /* * Only print once ... unfortunately there could be lots of * different FSCTLs that are called. */ diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index cb7b70f..42c565d 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -669,7 +669,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, struct user_auth_info *auth_info, struct cmd_set *cmd_entry, struct dcerpc_binding *binding, - int argc, char **argv) + int argc, const char **argv) { NTSTATUS ntresult; WERROR wresult; @@ -793,12 +793,12 @@ static NTSTATUS do_cmd(struct cli_state *cli, /* Run command */ if ( cmd_entry->returntype == RPC_RTYPE_NTSTATUS ) { - ntresult = cmd_entry->ntfn(cmd_entry->rpc_pipe, mem_ctx, argc, (const char **) argv); + ntresult = cmd_entry->ntfn(cmd_entry->rpc_pipe, mem_ctx, argc, argv); if (!NT_STATUS_IS_OK(ntresult)) { printf("result was %s\n", nt_errstr(ntresult)); } } else { - wresult = cmd_entry->wfn(cmd_entry->rpc_pipe, mem_ctx, argc, (const char **) argv); + wresult = cmd_entry->wfn(cmd_entry->rpc_pipe, mem_ctx, argc, argv); /* print out the DOS error */ if (!W_ERROR_IS_OK(wresult)) { printf( "result was %s\n", win_errstr(wresult)); @@ -828,9 +828,9 @@ static NTSTATUS process_cmd(struct user_auth_info *auth_info, NTSTATUS result = NT_STATUS_OK; int ret; int argc; - char **argv = NULL; + const char **argv = NULL; - if ((ret = poptParseArgvString(cmd, &argc, (const char ***) &argv)) != 0) { + if ((ret = poptParseArgvString(cmd, &argc, &argv)) != 0) { fprintf(stderr, "rpcclient: %s\n", poptStrerror(ret)); return NT_STATUS_UNSUCCESSFUL; } @@ -882,6 +882,7 @@ out_free: int main(int argc, char *argv[]) { + const char **const_argv = discard_const_p(const char *, argv); int opt; static char *cmdstr = NULL; const char *server; @@ -930,7 +931,7 @@ out_free: /* Parse options */ - pc = poptGetContext("rpcclient", argc, (const char **) argv, + pc = poptGetContext("rpcclient", argc, const_argv, long_options, 0); if (argc == 1) { diff --git a/source3/smbd/smb2_ioctl_named_pipe.c b/source3/smbd/smb2_ioctl_named_pipe.c index 601e1c3..13c4982 100644 --- a/source3/smbd/smb2_ioctl_named_pipe.c +++ b/source3/smbd/smb2_ioctl_named_pipe.c @@ -35,11 +35,13 @@ struct tevent_req *smb2_ioctl_named_pipe(uint32_t ctl_code, struct tevent_req *req, struct smbd_smb2_ioctl_state *state) { - struct tevent_req *subreq; + NTSTATUS status; + uint8_t *out_data = NULL; + uint32_t out_data_len = 0; + + if (ctl_code == FSCTL_PIPE_TRANSCEIVE) { + struct tevent_req *subreq; - switch (ctl_code) { - case FSCTL_PIPE_TRANSCEIVE: - { if (!IS_IPC(state->smbreq->conn)) { tevent_req_nterror(req, NT_STATUS_NOT_SUPPORTED); return tevent_req_post(req, ev); @@ -69,47 +71,36 @@ struct tevent_req *smb2_ioctl_named_pipe(uint32_t ctl_code, smbd_smb2_ioctl_pipe_write_done, req); return req; - break; } - default: { - NTSTATUS status; - uint8_t *out_data = NULL; - uint32_t out_data_len = 0; - if (state->fsp == NULL) { - status = NT_STATUS_NOT_SUPPORTED; - } else { - status = SMB_VFS_FSCTL(state->fsp, - state, - ctl_code, - state->smbreq->flags2, - state->in_input.data, - state->in_input.length, - &out_data, - state->in_max_output, - &out_data_len); - state->out_output = data_blob_const(out_data, out_data_len); - if (NT_STATUS_IS_OK(status)) { - tevent_req_done(req); - return tevent_req_post(req, ev); - } + if (state->fsp == NULL) { + status = NT_STATUS_NOT_SUPPORTED; + } else { + status = SMB_VFS_FSCTL(state->fsp, + state, + ctl_code, + state->smbreq->flags2, + state->in_input.data, + state->in_input.length, + &out_data, + state->in_max_output, + &out_data_len); + state->out_output = data_blob_const(out_data, out_data_len); + if (NT_STATUS_IS_OK(status)) { + tevent_req_done(req); + return tevent_req_post(req, ev); } + } - if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_SUPPORTED)) { - if (IS_IPC(state->smbreq->conn)) { - status = NT_STATUS_FS_DRIVER_REQUIRED; - } else { - status = NT_STATUS_INVALID_DEVICE_REQUEST; - } + if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_SUPPORTED)) { + if (IS_IPC(state->smbreq->conn)) { + status = NT_STATUS_FS_DRIVER_REQUIRED; + } else { + status = NT_STATUS_INVALID_DEVICE_REQUEST; } - - tevent_req_nterror(req, status); - return tevent_req_post(req, ev); - break; - } } - tevent_req_nterror(req, NT_STATUS_INTERNAL_ERROR); + tevent_req_nterror(req, status); return tevent_req_post(req, ev); } diff --git a/source4/libcli/finddcs_cldap.c b/source4/libcli/finddcs_cldap.c index bf8da4e..ce0e1c7 100644 --- a/source4/libcli/finddcs_cldap.c +++ b/source4/libcli/finddcs_cldap.c @@ -431,14 +431,18 @@ NTSTATUS finddcs_cldap_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, struct talloc_free(req); return NT_STATUS_INTERNAL_ERROR; } - status = tevent_req_simple_recv_ntstatus(req); - if (NT_STATUS_IS_OK(status)) { - talloc_steal(mem_ctx, state->netlogon); - io->out.netlogon = state->netlogon->out.netlogon; - io->out.address = talloc_steal(mem_ctx, state->srv_addresses[state->srv_address_index]); + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; } + + talloc_steal(mem_ctx, state->netlogon); + io->out.netlogon = state->netlogon->out.netlogon; + io->out.address = talloc_steal( + mem_ctx, state->srv_addresses[state->srv_address_index]); + tevent_req_received(req); - return status; + return NT_STATUS_OK; } NTSTATUS finddcs_cldap(TALLOC_CTX *mem_ctx, diff --git a/source4/libcli/finddcs_nbt.c b/source4/libcli/finddcs_nbt.c index 6a5d1fd..147efde 100644 --- a/source4/libcli/finddcs_nbt.c +++ b/source4/libcli/finddcs_nbt.c -- Samba Shared Repository