[PATCH] A few small ones
Jeremy Allison
jra at samba.org
Tue Sep 27 02:26:40 UTC 2016
On Mon, Sep 26, 2016 at 05:54:33PM -0700, Volker Lendecke wrote:
> Hi!
>
> Review appreciated!
LGTM. Pushed !
> From b9bb484dc20bfac46c47412a73f0c9c0ab877f4f Mon Sep 17 00:00:00 2001
> From: Volker Lendecke <vl at samba.org>
> Date: Mon, 26 Sep 2016 08:16:15 -0700
> Subject: [PATCH 1/4] lib: Only return "rec" on demand in
> messaging_filtered_read_recv
>
> The message could be just a trigger without contents.
>
> Signed-off-by: Volker Lendecke <vl at samba.org>
> ---
> source3/lib/messages.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/source3/lib/messages.c b/source3/lib/messages.c
> index 3ed6dfe..ef5d679 100644
> --- a/source3/lib/messages.c
> +++ b/source3/lib/messages.c
> @@ -650,7 +650,9 @@ int messaging_filtered_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
> tevent_req_received(req);
> return err;
> }
> - *presult = talloc_move(mem_ctx, &state->rec);
> + if (presult != NULL) {
> + *presult = talloc_move(mem_ctx, &state->rec);
> + }
> return 0;
> }
>
> --
> 2.7.4
>
>
> From 314f9555097d9620666ca6f8a13fe30cc6c05d12 Mon Sep 17 00:00:00 2001
> From: Volker Lendecke <vl at samba.org>
> Date: Sun, 18 Sep 2016 14:03:33 +0200
> Subject: [PATCH 2/4] wbclient: "ev" is no longer used in wbc_sids_to_xids
>
> Signed-off-by: Volker Lendecke <vl at samba.org>
> ---
> source4/auth/unix_token.c | 2 +-
> source4/libcli/wbclient/wbclient.c | 3 +--
> source4/libcli/wbclient/wbclient.h | 3 +--
> source4/ntvfs/posix/pvfs_acl.c | 6 ++----
> source4/ntvfs/posix/pvfs_acl_nfs4.c | 3 +--
> source4/rpc_server/unixinfo/dcesrv_unixinfo.c | 4 ++--
> 6 files changed, 8 insertions(+), 13 deletions(-)
>
> diff --git a/source4/auth/unix_token.c b/source4/auth/unix_token.c
> index efc9a9d..385109b 100644
> --- a/source4/auth/unix_token.c
> +++ b/source4/auth/unix_token.c
> @@ -55,7 +55,7 @@ NTSTATUS security_token_to_unix_token(TALLOC_CTX *mem_ctx,
> ids[s].status = ID_UNKNOWN;
> }
>
> - status = wbc_sids_to_xids(ev, ids, token->num_sids);
> + status = wbc_sids_to_xids(ids, token->num_sids);
> NT_STATUS_NOT_OK_RETURN(status);
>
> g = token->num_sids;
> diff --git a/source4/libcli/wbclient/wbclient.c b/source4/libcli/wbclient/wbclient.c
> index f306556..1ff35c8 100644
> --- a/source4/libcli/wbclient/wbclient.c
> +++ b/source4/libcli/wbclient/wbclient.c
> @@ -26,8 +26,7 @@
> #include "libcli/security/dom_sid.h"
> #include "nsswitch/libwbclient/wbclient.h"
>
> -NTSTATUS wbc_sids_to_xids(struct tevent_context *ev, struct id_map *ids,
> - uint32_t count)
> +NTSTATUS wbc_sids_to_xids(struct id_map *ids, uint32_t count)
> {
> TALLOC_CTX *mem_ctx;
> uint32_t i;
> diff --git a/source4/libcli/wbclient/wbclient.h b/source4/libcli/wbclient/wbclient.h
> index fc096cc..1300c73 100644
> --- a/source4/libcli/wbclient/wbclient.h
> +++ b/source4/libcli/wbclient/wbclient.h
> @@ -20,8 +20,7 @@
> */
> #include "librpc/gen_ndr/idmap.h"
>
> -NTSTATUS wbc_sids_to_xids(struct tevent_context *ev, struct id_map *ids,
> - uint32_t count);
> +NTSTATUS wbc_sids_to_xids(struct id_map *ids, uint32_t count);
>
> NTSTATUS wbc_xids_to_sids(struct tevent_context *ev, struct id_map *ids,
> uint32_t count);
> diff --git a/source4/ntvfs/posix/pvfs_acl.c b/source4/ntvfs/posix/pvfs_acl.c
> index 269b5ec..be12ef2 100644
> --- a/source4/ntvfs/posix/pvfs_acl.c
> +++ b/source4/ntvfs/posix/pvfs_acl.c
> @@ -330,8 +330,7 @@ NTSTATUS pvfs_acl_set(struct pvfs_state *pvfs,
> }
> if (!dom_sid_equal(sd->owner_sid, new_sd->owner_sid)) {
> ids->sid = new_sd->owner_sid;
> - status = wbc_sids_to_xids(pvfs->ntvfs->ctx->event_ctx,
> - ids, 1);
> + status = wbc_sids_to_xids(ids, 1);
> NT_STATUS_NOT_OK_RETURN(status);
>
> if (ids->xid.type == ID_TYPE_BOTH ||
> @@ -348,8 +347,7 @@ NTSTATUS pvfs_acl_set(struct pvfs_state *pvfs,
> }
> if (!dom_sid_equal(sd->group_sid, new_sd->group_sid)) {
> ids->sid = new_sd->group_sid;
> - status = wbc_sids_to_xids(pvfs->ntvfs->ctx->event_ctx,
> - ids, 1);
> + status = wbc_sids_to_xids(ids, 1);
> NT_STATUS_NOT_OK_RETURN(status);
>
> if (ids->xid.type == ID_TYPE_BOTH ||
> diff --git a/source4/ntvfs/posix/pvfs_acl_nfs4.c b/source4/ntvfs/posix/pvfs_acl_nfs4.c
> index dbb43e2..948ddb2 100644
> --- a/source4/ntvfs/posix/pvfs_acl_nfs4.c
> +++ b/source4/ntvfs/posix/pvfs_acl_nfs4.c
> @@ -155,8 +155,7 @@ static NTSTATUS pvfs_acl_save_nfs4(struct pvfs_state *pvfs, struct pvfs_filename
> ids[i].status = ID_UNKNOWN;
> }
>
> - status = wbc_sids_to_xids(pvfs->ntvfs->ctx->event_ctx, ids,
> - acl.a_count);
> + status = wbc_sids_to_xids(ids, acl.a_count);
> if (!NT_STATUS_IS_OK(status)) {
> talloc_free(tmp_ctx);
> return status;
> diff --git a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
> index 10eda45..771e4fd 100644
> --- a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
> +++ b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
> @@ -40,7 +40,7 @@ static NTSTATUS dcesrv_unixinfo_SidToUid(struct dcesrv_call_state *dce_call,
> ids->sid = &r->in.sid;
> ids->status = ID_UNKNOWN;
> ZERO_STRUCT(ids->xid);
> - status = wbc_sids_to_xids(dce_call->event_ctx, ids, 1);
> + status = wbc_sids_to_xids(ids, 1);
> NT_STATUS_NOT_OK_RETURN(status);
>
> if (ids->xid.type == ID_TYPE_BOTH ||
> @@ -99,7 +99,7 @@ static NTSTATUS dcesrv_unixinfo_SidToGid(struct dcesrv_call_state *dce_call,
> ids->sid = &r->in.sid;
> ids->status = ID_UNKNOWN;
> ZERO_STRUCT(ids->xid);
> - status = wbc_sids_to_xids(dce_call->event_ctx, ids, 1);
> + status = wbc_sids_to_xids(ids, 1);
> NT_STATUS_NOT_OK_RETURN(status);
>
> if (ids->xid.type == ID_TYPE_BOTH ||
> --
> 2.7.4
>
>
> From 6825b234d80a21911e480e58d3e6e973d4a96228 Mon Sep 17 00:00:00 2001
> From: Volker Lendecke <vl at samba.org>
> Date: Sun, 18 Sep 2016 14:06:24 +0200
> Subject: [PATCH 3/4] wbclient: "ev" is no longer used in wbc_xids_to_sids
>
> Signed-off-by: Volker Lendecke <vl at samba.org>
> ---
> source4/libcli/wbclient/wbclient.c | 3 +--
> source4/libcli/wbclient/wbclient.h | 3 +--
> source4/ntvfs/posix/pvfs_acl.c | 4 ++--
> source4/ntvfs/posix/pvfs_acl_nfs4.c | 2 +-
> source4/rpc_server/unixinfo/dcesrv_unixinfo.c | 4 ++--
> 5 files changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/source4/libcli/wbclient/wbclient.c b/source4/libcli/wbclient/wbclient.c
> index 1ff35c8..69d8b43 100644
> --- a/source4/libcli/wbclient/wbclient.c
> +++ b/source4/libcli/wbclient/wbclient.c
> @@ -102,8 +102,7 @@ NTSTATUS wbc_sids_to_xids(struct id_map *ids, uint32_t count)
> return NT_STATUS_OK;
> }
>
> -NTSTATUS wbc_xids_to_sids(struct tevent_context *ev, struct id_map *ids,
> - uint32_t count)
> +NTSTATUS wbc_xids_to_sids(struct id_map *ids, uint32_t count)
> {
> TALLOC_CTX *mem_ctx;
> uint32_t i;
> diff --git a/source4/libcli/wbclient/wbclient.h b/source4/libcli/wbclient/wbclient.h
> index 1300c73..6334428 100644
> --- a/source4/libcli/wbclient/wbclient.h
> +++ b/source4/libcli/wbclient/wbclient.h
> @@ -22,5 +22,4 @@
>
> NTSTATUS wbc_sids_to_xids(struct id_map *ids, uint32_t count);
>
> -NTSTATUS wbc_xids_to_sids(struct tevent_context *ev, struct id_map *ids,
> - uint32_t count);
> +NTSTATUS wbc_xids_to_sids(struct id_map *ids, uint32_t count);
> diff --git a/source4/ntvfs/posix/pvfs_acl.c b/source4/ntvfs/posix/pvfs_acl.c
> index be12ef2..b298764 100644
> --- a/source4/ntvfs/posix/pvfs_acl.c
> +++ b/source4/ntvfs/posix/pvfs_acl.c
> @@ -169,7 +169,7 @@ static NTSTATUS pvfs_default_acl(struct pvfs_state *pvfs,
> ids[1].xid.type = ID_TYPE_GID;
> ids[1].sid = NULL;
>
> - status = wbc_xids_to_sids(pvfs->ntvfs->ctx->event_ctx, ids, 2);
> + status = wbc_xids_to_sids(ids, 2);
> NT_STATUS_NOT_OK_RETURN(status);
>
> sd->owner_sid = talloc_steal(sd, ids[0].sid);
> @@ -995,7 +995,7 @@ NTSTATUS pvfs_acl_inherited_sd(struct pvfs_state *pvfs,
> ids[1].sid = NULL;
> ids[1].status = ID_UNKNOWN;
>
> - status = wbc_xids_to_sids(pvfs->ntvfs->ctx->event_ctx, ids, 2);
> + status = wbc_xids_to_sids(ids, 2);
> if (!NT_STATUS_IS_OK(status)) {
> TALLOC_FREE(tmp_ctx);
> return status;
> diff --git a/source4/ntvfs/posix/pvfs_acl_nfs4.c b/source4/ntvfs/posix/pvfs_acl_nfs4.c
> index 948ddb2..bd00794 100644
> --- a/source4/ntvfs/posix/pvfs_acl_nfs4.c
> +++ b/source4/ntvfs/posix/pvfs_acl_nfs4.c
> @@ -90,7 +90,7 @@ static NTSTATUS pvfs_acl_load_nfs4(struct pvfs_state *pvfs, struct pvfs_filename
>
> /* Allocate memory for the sids from the security descriptor to be on
> * the safe side. */
> - status = wbc_xids_to_sids(pvfs->ntvfs->ctx->event_ctx, ids, num_ids);
> + status = wbc_xids_to_sids(ids, num_ids);
> NT_STATUS_NOT_OK_RETURN(status);
>
> sd->owner_sid = talloc_steal(sd, ids[0].sid);
> diff --git a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
> index 771e4fd..848c11f 100644
> --- a/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
> +++ b/source4/rpc_server/unixinfo/dcesrv_unixinfo.c
> @@ -77,7 +77,7 @@ static NTSTATUS dcesrv_unixinfo_UidToSid(struct dcesrv_call_state *dce_call,
> ids->xid.id = uid;
> ids->xid.type = ID_TYPE_UID;
>
> - status = wbc_xids_to_sids(dce_call->event_ctx, ids, 1);
> + status = wbc_xids_to_sids(ids, 1);
> NT_STATUS_NOT_OK_RETURN(status);
>
> r->out.sid = ids->sid;
> @@ -136,7 +136,7 @@ static NTSTATUS dcesrv_unixinfo_GidToSid(struct dcesrv_call_state *dce_call,
> ids->xid.id = gid;
> ids->xid.type = ID_TYPE_GID;
>
> - status = wbc_xids_to_sids(dce_call->event_ctx, ids, 1);
> + status = wbc_xids_to_sids(ids, 1);
> NT_STATUS_NOT_OK_RETURN(status);
>
> r->out.sid = ids->sid;
> --
> 2.7.4
>
>
> From 4fd18e3ef93901b23877273d826dd9a9a85d0c24 Mon Sep 17 00:00:00 2001
> From: Volker Lendecke <vl at samba.org>
> Date: Fri, 22 Jul 2016 15:59:32 +0200
> Subject: [PATCH 4/4] messaging: Add wrap check to messaging_rec_dup
>
> Just paranoia
>
> Signed-off-by: Volker Lendecke <vl at samba.org>
> ---
> source3/lib/messages.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/source3/lib/messages.c b/source3/lib/messages.c
> index ef5d679..3e11cc5 100644
> --- a/source3/lib/messages.c
> +++ b/source3/lib/messages.c
> @@ -496,9 +496,16 @@ static struct messaging_rec *messaging_rec_dup(TALLOC_CTX *mem_ctx,
> {
> struct messaging_rec *result;
> size_t fds_size = sizeof(int64_t) * rec->num_fds;
> + size_t payload_len;
> +
> + payload_len = rec->buf.length + fds_size;
> + if (payload_len < rec->buf.length) {
> + /* overflow */
> + return NULL;
> + }
>
> result = talloc_pooled_object(mem_ctx, struct messaging_rec, 2,
> - rec->buf.length + fds_size);
> + payload_len);
> if (result == NULL) {
> return NULL;
> }
> --
> 2.7.4
>
More information about the samba-technical
mailing list