summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcesrv_auth.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2003-12-17 02:06:44 +0000
committerAndrew Tridgell <tridge@samba.org>2003-12-17 02:06:44 +0000
commit7efa19cd2285617dcb39d67a81a821b5119c3748 (patch)
tree2a2dacec8900cf3b5e619774af88fdcc9a054a8d /source4/rpc_server/dcesrv_auth.c
parent938eef5bebed15cca6259c760d0afc00f5c088e6 (diff)
downloadsamba-7efa19cd2285617dcb39d67a81a821b5119c3748.tar.gz
samba-7efa19cd2285617dcb39d67a81a821b5119c3748.tar.bz2
samba-7efa19cd2285617dcb39d67a81a821b5119c3748.zip
added a smb.conf flag "rpc big endian" that tells our rpc server to
send packets in bigendian format. (This used to be commit 44df662960e662a55a9f27627f838771503a7a59)
Diffstat (limited to 'source4/rpc_server/dcesrv_auth.c')
-rw-r--r--source4/rpc_server/dcesrv_auth.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source4/rpc_server/dcesrv_auth.c b/source4/rpc_server/dcesrv_auth.c
index 0f4b22ee3d..776d394e99 100644
--- a/source4/rpc_server/dcesrv_auth.c
+++ b/source4/rpc_server/dcesrv_auth.c
@@ -184,6 +184,10 @@ BOOL dcesrv_auth_request(struct dcesrv_call_state *call)
return False;
}
+ if (!(pkt->drep[0] & DCERPC_DREP_LE)) {
+ ndr->flags |= LIBNDR_FLAG_BIGENDIAN;
+ }
+
status = ndr_pull_dcerpc_auth(ndr, NDR_SCALARS|NDR_BUFFERS, &auth);
if (!NT_STATUS_IS_OK(status)) {
return False;
@@ -232,7 +236,7 @@ BOOL dcesrv_auth_response(struct dcesrv_call_state *call,
/* non-signed packets are simple */
if (!dce->auth_state.auth_info || !dce->auth_state.ntlmssp_state) {
- status = dcerpc_push_auth(blob, call->mem_ctx, pkt, NULL, 0);
+ status = dcerpc_push_auth(blob, call->mem_ctx, pkt, NULL);
return NT_STATUS_IS_OK(status);
}
@@ -241,6 +245,10 @@ BOOL dcesrv_auth_response(struct dcesrv_call_state *call,
return False;
}
+ if (pkt->drep[0] & DCERPC_DREP_LE) {
+ ndr->flags |= LIBNDR_FLAG_BIGENDIAN;
+ }
+
status = ndr_push_dcerpc_packet(ndr, NDR_SCALARS|NDR_BUFFERS, pkt);
if (!NT_STATUS_IS_OK(status)) {
return False;
@@ -286,8 +294,8 @@ BOOL dcesrv_auth_response(struct dcesrv_call_state *call,
/* fill in the fragment length and auth_length, we can't fill
in these earlier as we don't know the signature length (it
could be variable length) */
- SSVAL(blob->data, DCERPC_FRAG_LEN_OFFSET, blob->length);
- SSVAL(blob->data, DCERPC_AUTH_LEN_OFFSET, dce->auth_state.auth_info->credentials.length);
+ dcerpc_set_frag_length(blob, blob->length);
+ dcerpc_set_auth_length(blob, dce->auth_state.auth_info->credentials.length);
data_blob_free(&dce->auth_state.auth_info->credentials);