We need to intialise *ids regardless of the status of the call, as the
IDL specifies that the out[] array always exists. If we don't
initialise out then we get a segv when a id mapping fails.
This still doesn't explain why the idmapping is failing, but at least
the client now gets NT_STATUS_NONE_MAPPED rather than a crashed
server.
(This used to be commit
4449ce381aca25e7f510a2f24b43c3a81e870032)
struct id_mapping **ids)
{
NTSTATUS status = composite_wait(ctx);
+ struct sids2xids_state *state = talloc_get_type(ctx->private_data,
+ struct sids2xids_state);
DEBUG(5, ("wb_sids2xids_recv called\n"));
- if (NT_STATUS_IS_OK(status)) {
- struct sids2xids_state *state =
- talloc_get_type(ctx->private_data,
- struct sids2xids_state);
- *ids = state->ids;
- }
+ *ids = state->ids;
+
talloc_free(ctx);
return status;
}
struct id_mapping **ids)
{
NTSTATUS status = composite_wait(ctx);
+ struct xids2sids_state *state = talloc_get_type(ctx->private_data,
+ struct xids2sids_state);
DEBUG(5, ("wb_xids2sids_recv called.\n"));
- if (NT_STATUS_IS_OK(status)) {
- struct xids2sids_state *state =
- talloc_get_type(ctx->private_data,
- struct xids2sids_state);
- *ids = state->ids;
- }
+ *ids = state->ids;
+
talloc_free(ctx);
return status;
}