[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Fri Feb 22 22:17:02 UTC 2019
The branch, master has been updated
via 0a1d1a57092 s3:winbindd: Remove unused arcfour.h from PAM handling
via e50315379c8 s3:rpc_server: Remove unused arcfour.h from netlogon
via 6b4bb2327c0 s3:auth: Remove unused arcfour.h from auth_util.c
via 3d95c1f6b11 s3:auth: Remove unused arcfour.h header from server_info.c
via 121af4c3fc8 s4:dns_crypto: Remove unused include of hmac_md5.h
via 5dd67797ca8 libsmb: Fix a resource leak in cli_posix_mkdir
via 529c61d0c9d libsmb: Pull up wire_flags calculation from open_internal
via 64176f00bfe libsmb: Convert cli_posix_open to normal tevent_req pattern
from 02c9bee85a9 set caller allocation units in statvfs f_bavail
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 0a1d1a57092828e61ecc07433d73db95ddbfa189
Author: Andreas Schneider <asn at samba.org>
Date: Fri Feb 22 13:10:30 2019 +0100
s3:winbindd: Remove unused arcfour.h from PAM handling
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Fri Feb 22 23:16:40 CET 2019 on sn-devel-144
commit e50315379c89284557e43d96acde5ed7594d9460
Author: Andreas Schneider <asn at samba.org>
Date: Fri Feb 22 13:09:40 2019 +0100
s3:rpc_server: Remove unused arcfour.h from netlogon
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 6b4bb2327c0e38418e615dc6f82f0b5a3d56507a
Author: Andreas Schneider <asn at samba.org>
Date: Fri Feb 22 13:07:15 2019 +0100
s3:auth: Remove unused arcfour.h from auth_util.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 3d95c1f6b110cd097268da31d53ac6523621f733
Author: Andreas Schneider <asn at samba.org>
Date: Fri Feb 22 13:03:04 2019 +0100
s3:auth: Remove unused arcfour.h header from server_info.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 121af4c3fc8a8f71dd364d02509aa45545257721
Author: Andreas Schneider <asn at samba.org>
Date: Tue Nov 6 17:36:31 2018 +0100
s4:dns_crypto: Remove unused include of hmac_md5.h
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 5dd67797ca8025c13f55775c4a5892ecf1b53e3e
Author: Volker Lendecke <vl at samba.org>
Date: Wed Feb 20 11:55:01 2019 +0100
libsmb: Fix a resource leak in cli_posix_mkdir
smbd does posix_mkdir if the wire flags are exactly
if (wire_open_mode == (SMB_O_CREAT|SMB_O_DIRECTORY))
open_flags_to_wire however adds a SMB_O_RDONLY, so that we enter the
normal open routine which happens to create a directory as well. The
main difference is that posix_mkdir does *NOT* return an open
handle. As we did not enter this code path due to the SMB_O_RDONLY we
leak a SMB1 fd per cli_posix_mkdir call.
Pretty hard to test automatically, this would be an interaction with
smbstatus.
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 529c61d0c9db5cf1ce852b06e14b7f1b2e72150e
Author: Volker Lendecke <vl at samba.org>
Date: Wed Feb 20 11:41:42 2019 +0100
libsmb: Pull up wire_flags calculation from open_internal
This avoids passing down a boolean
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 64176f00bfe78fb443216fadfece5d236dbe1f6c
Author: Volker Lendecke <vl at samba.org>
Date: Fri Feb 15 20:14:47 2019 +0100
libsmb: Convert cli_posix_open to normal tevent_req pattern
Signed-off-by: Volker Lendecke <vl at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
source3/auth/auth_util.c | 1 -
source3/auth/server_info.c | 1 -
source3/libsmb/clifile.c | 216 +++++++++++++++++++---------
source3/rpc_server/netlogon/srv_netlog_nt.c | 1 -
source3/winbindd/winbindd_pam.c | 1 -
source4/dns_server/dns_crypto.c | 1 -
6 files changed, 151 insertions(+), 70 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
index d78dbed14b2..7f80055fda8 100644
--- a/source3/auth/auth_util.c
+++ b/source3/auth/auth_util.c
@@ -25,7 +25,6 @@
#include "auth.h"
#include "lib/util_unixsids.h"
#include "../libcli/auth/libcli_auth.h"
-#include "../lib/crypto/arcfour.h"
#include "rpc_client/init_lsa.h"
#include "../libcli/security/security.h"
#include "../lib/util/util_pw.h"
diff --git a/source3/auth/server_info.c b/source3/auth/server_info.c
index 2c48d1bb7a9..527a7dbce60 100644
--- a/source3/auth/server_info.c
+++ b/source3/auth/server_info.c
@@ -20,7 +20,6 @@
#include "includes.h"
#include "auth.h"
#include "lib/util_unixsids.h"
-#include "../lib/crypto/arcfour.h"
#include "../librpc/gen_ndr/netlogon.h"
#include "../libcli/security/security.h"
#include "rpc_client/util_netlogon.h"
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index 6defa38fdee..ff98ba60034 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -5099,45 +5099,27 @@ static uint32_t open_flags_to_wire(int flags)
Open a file - POSIX semantics. Returns fnum. Doesn't request oplock.
****************************************************************************/
-struct posix_open_state {
+struct cli_posix_open_internal_state {
uint16_t setup;
uint8_t *param;
uint8_t data[18];
uint16_t fnum; /* Out */
};
-static void cli_posix_open_internal_done(struct tevent_req *subreq)
-{
- struct tevent_req *req = tevent_req_callback_data(
- subreq, struct tevent_req);
- struct posix_open_state *state = tevent_req_data(req, struct posix_open_state);
- NTSTATUS status;
- uint8_t *data;
- uint32_t num_data;
-
- status = cli_trans_recv(subreq, state, NULL, NULL, 0, NULL,
- NULL, 0, NULL, &data, 12, &num_data);
- TALLOC_FREE(subreq);
- if (tevent_req_nterror(req, status)) {
- return;
- }
- state->fnum = SVAL(data,2);
- tevent_req_done(req);
-}
+static void cli_posix_open_internal_done(struct tevent_req *subreq);
static struct tevent_req *cli_posix_open_internal_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct cli_state *cli,
const char *fname,
- int flags,
- mode_t mode,
- bool is_dir)
+ uint32_t wire_flags,
+ mode_t mode)
{
struct tevent_req *req = NULL, *subreq = NULL;
- struct posix_open_state *state = NULL;
- uint32_t wire_flags = open_flags_to_wire(flags);
+ struct cli_posix_open_internal_state *state = NULL;
- req = tevent_req_create(mem_ctx, &state, struct posix_open_state);
+ req = tevent_req_create(
+ mem_ctx, &state, struct cli_posix_open_internal_state);
if (req == NULL) {
return NULL;
}
@@ -5146,25 +5128,23 @@ static struct tevent_req *cli_posix_open_internal_send(TALLOC_CTX *mem_ctx,
SSVAL(&state->setup, 0, TRANSACT2_SETPATHINFO);
/* Setup param array. */
- state->param = talloc_array(state, uint8_t, 6);
+ state->param = talloc_zero_array(state, uint8_t, 6);
if (tevent_req_nomem(state->param, req)) {
return tevent_req_post(req, ev);
}
- memset(state->param, '\0', 6);
SSVAL(state->param, 0, SMB_POSIX_PATH_OPEN);
- state->param = trans2_bytes_push_str(state->param, smbXcli_conn_use_unicode(cli->conn), fname,
- strlen(fname)+1, NULL);
+ state->param = trans2_bytes_push_str(
+ state->param,
+ smbXcli_conn_use_unicode(cli->conn),
+ fname,
+ strlen(fname)+1,
+ NULL);
if (tevent_req_nomem(state->param, req)) {
return tevent_req_post(req, ev);
}
- /* Setup data words. */
- if (is_dir) {
- wire_flags |= SMB_O_DIRECTORY;
- }
-
SIVAL(state->data,0,0); /* No oplock. */
SIVAL(state->data,4,wire_flags);
SIVAL(state->data,8,unix_perms_to_wire(mode));
@@ -5197,6 +5177,57 @@ static struct tevent_req *cli_posix_open_internal_send(TALLOC_CTX *mem_ctx,
return req;
}
+static void cli_posix_open_internal_done(struct tevent_req *subreq)
+{
+ struct tevent_req *req = tevent_req_callback_data(
+ subreq, struct tevent_req);
+ struct cli_posix_open_internal_state *state = tevent_req_data(
+ req, struct cli_posix_open_internal_state);
+ NTSTATUS status;
+ uint8_t *data;
+ uint32_t num_data;
+
+ status = cli_trans_recv(
+ subreq,
+ state,
+ NULL,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ 0,
+ NULL,
+ &data,
+ 12,
+ &num_data);
+ TALLOC_FREE(subreq);
+ if (tevent_req_nterror(req, status)) {
+ return;
+ }
+ state->fnum = SVAL(data,2);
+ tevent_req_done(req);
+}
+
+static NTSTATUS cli_posix_open_internal_recv(struct tevent_req *req,
+ uint16_t *pfnum)
+{
+ struct cli_posix_open_internal_state *state = tevent_req_data(
+ req, struct cli_posix_open_internal_state);
+ NTSTATUS status;
+
+ if (tevent_req_is_nterror(req, &status)) {
+ return status;
+ }
+ *pfnum = state->fnum;
+ return NT_STATUS_OK;
+}
+
+struct cli_posix_open_state {
+ uint16_t fnum;
+};
+
+static void cli_posix_open_done(struct tevent_req *subreq);
+
struct tevent_req *cli_posix_open_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct cli_state *cli,
@@ -5204,13 +5235,47 @@ struct tevent_req *cli_posix_open_send(TALLOC_CTX *mem_ctx,
int flags,
mode_t mode)
{
- return cli_posix_open_internal_send(mem_ctx, ev,
- cli, fname, flags, mode, false);
+ struct tevent_req *req = NULL, *subreq = NULL;
+ struct cli_posix_open_state *state = NULL;
+ uint32_t wire_flags;
+
+ req = tevent_req_create(mem_ctx, &state,
+ struct cli_posix_open_state);
+ if (req == NULL) {
+ return NULL;
+ }
+
+ wire_flags = open_flags_to_wire(flags);
+
+ subreq = cli_posix_open_internal_send(
+ mem_ctx, ev, cli, fname, wire_flags, mode);
+ if (tevent_req_nomem(subreq, req)) {
+ return tevent_req_post(req, ev);
+ }
+ tevent_req_set_callback(subreq, cli_posix_open_done, req);
+ return req;
+}
+
+static void cli_posix_open_done(struct tevent_req *subreq)
+{
+ struct tevent_req *req = tevent_req_callback_data(
+ subreq, struct tevent_req);
+ struct cli_posix_open_state *state = tevent_req_data(
+ req, struct cli_posix_open_state);
+ NTSTATUS status;
+
+ status = cli_posix_open_internal_recv(subreq, &state->fnum);
+ TALLOC_FREE(subreq);
+ if (tevent_req_nterror(req, status)) {
+ return;
+ }
+ tevent_req_done(req);
}
NTSTATUS cli_posix_open_recv(struct tevent_req *req, uint16_t *pfnum)
{
- struct posix_open_state *state = tevent_req_data(req, struct posix_open_state);
+ struct cli_posix_open_state *state = tevent_req_data(
+ req, struct cli_posix_open_state);
NTSTATUS status;
if (tevent_req_is_nterror(req, &status)) {
@@ -5231,7 +5296,7 @@ NTSTATUS cli_posix_open(struct cli_state *cli, const char *fname,
TALLOC_CTX *frame = talloc_stackframe();
struct tevent_context *ev = NULL;
struct tevent_req *req = NULL;
- NTSTATUS status = NT_STATUS_OK;
+ NTSTATUS status = NT_STATUS_NO_MEMORY;
if (smbXcli_conn_has_async_calls(cli->conn)) {
/*
@@ -5240,43 +5305,73 @@ NTSTATUS cli_posix_open(struct cli_state *cli, const char *fname,
status = NT_STATUS_INVALID_PARAMETER;
goto fail;
}
-
ev = samba_tevent_context_init(frame);
if (ev == NULL) {
- status = NT_STATUS_NO_MEMORY;
goto fail;
}
-
- req = cli_posix_open_send(frame,
- ev,
- cli,
- fname,
- flags,
- mode);
+ req = cli_posix_open_send(
+ frame, ev, cli, fname, flags, mode);
if (req == NULL) {
- status = NT_STATUS_NO_MEMORY;
goto fail;
}
-
if (!tevent_req_poll_ntstatus(req, ev, &status)) {
goto fail;
}
-
status = cli_posix_open_recv(req, pfnum);
-
fail:
TALLOC_FREE(frame);
return status;
}
+struct cli_posix_mkdir_state {
+ struct tevent_context *ev;
+ struct cli_state *cli;
+};
+
+static void cli_posix_mkdir_done(struct tevent_req *subreq);
+
struct tevent_req *cli_posix_mkdir_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct cli_state *cli,
const char *fname,
mode_t mode)
{
- return cli_posix_open_internal_send(mem_ctx, ev,
- cli, fname, O_CREAT, mode, true);
+ struct tevent_req *req = NULL, *subreq = NULL;
+ struct cli_posix_mkdir_state *state = NULL;
+ uint32_t wire_flags;
+
+ req = tevent_req_create(
+ mem_ctx, &state, struct cli_posix_mkdir_state);
+ if (req == NULL) {
+ return NULL;
+ }
+ state->ev = ev;
+ state->cli = cli;
+
+ wire_flags = SMB_O_CREAT | SMB_O_DIRECTORY;
+
+ subreq = cli_posix_open_internal_send(
+ mem_ctx, ev, cli, fname, wire_flags, mode);
+ if (tevent_req_nomem(subreq, req)) {
+ return tevent_req_post(req, ev);
+ }
+ tevent_req_set_callback(subreq, cli_posix_mkdir_done, req);
+ return req;
+}
+
+static void cli_posix_mkdir_done(struct tevent_req *subreq)
+{
+ struct tevent_req *req = tevent_req_callback_data(
+ subreq, struct tevent_req);
+ NTSTATUS status;
+ uint16_t fnum;
+
+ status = cli_posix_open_internal_recv(subreq, &fnum);
+ TALLOC_FREE(subreq);
+ if (tevent_req_nterror(req, status)) {
+ return;
+ }
+ tevent_req_done(req);
}
NTSTATUS cli_posix_mkdir_recv(struct tevent_req *req)
@@ -5289,7 +5384,7 @@ NTSTATUS cli_posix_mkdir(struct cli_state *cli, const char *fname, mode_t mode)
TALLOC_CTX *frame = talloc_stackframe();
struct tevent_context *ev = NULL;
struct tevent_req *req = NULL;
- NTSTATUS status = NT_STATUS_OK;
+ NTSTATUS status = NT_STATUS_NO_MEMORY;
if (smbXcli_conn_has_async_calls(cli->conn)) {
/*
@@ -5301,26 +5396,17 @@ NTSTATUS cli_posix_mkdir(struct cli_state *cli, const char *fname, mode_t mode)
ev = samba_tevent_context_init(frame);
if (ev == NULL) {
- status = NT_STATUS_NO_MEMORY;
goto fail;
}
-
- req = cli_posix_mkdir_send(frame,
- ev,
- cli,
- fname,
- mode);
+ req = cli_posix_mkdir_send(
+ frame, ev, cli, fname, mode);
if (req == NULL) {
- status = NT_STATUS_NO_MEMORY;
goto fail;
}
-
if (!tevent_req_poll_ntstatus(req, ev, &status)) {
goto fail;
}
-
status = cli_posix_mkdir_recv(req);
-
fail:
TALLOC_FREE(frame);
return status;
diff --git a/source3/rpc_server/netlogon/srv_netlog_nt.c b/source3/rpc_server/netlogon/srv_netlog_nt.c
index 9b9947455ed..a846a728f24 100644
--- a/source3/rpc_server/netlogon/srv_netlog_nt.c
+++ b/source3/rpc_server/netlogon/srv_netlog_nt.c
@@ -38,7 +38,6 @@
#include "../libcli/security/security.h"
#include "../libcli/security/dom_sid.h"
#include "librpc/gen_ndr/ndr_drsblobs.h"
-#include "lib/crypto/arcfour.h"
#include "lib/crypto/md4.h"
#include "nsswitch/libwbclient/wbclient.h"
#include "../libcli/registry/util_reg.h"
diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c
index 1e6591aea65..2d533773fb9 100644
--- a/source3/winbindd/winbindd_pam.c
+++ b/source3/winbindd/winbindd_pam.c
@@ -32,7 +32,6 @@
#include "../librpc/gen_ndr/ndr_netlogon.h"
#include "rpc_client/cli_netlogon.h"
#include "smb_krb5.h"
-#include "../lib/crypto/arcfour.h"
#include "../libcli/security/security.h"
#include "ads.h"
#include "../librpc/gen_ndr/krb5pac.h"
diff --git a/source4/dns_server/dns_crypto.c b/source4/dns_server/dns_crypto.c
index 8c7502628d5..6d2b8648757 100644
--- a/source4/dns_server/dns_crypto.c
+++ b/source4/dns_server/dns_crypto.c
@@ -20,7 +20,6 @@
*/
#include "includes.h"
-#include "lib/crypto/hmacmd5.h"
#include "system/network.h"
#include "librpc/ndr/libndr.h"
#include "librpc/gen_ndr/ndr_dns.h"
--
Samba Shared Repository
More information about the samba-cvs
mailing list