r7696: Don't try and be clever and read an 8 byte int and 3 pad bytes
authorJeremy Allison <jra@samba.org>
Fri, 17 Jun 2005 18:05:46 +0000 (18:05 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:57:19 +0000 (10:57 -0500)
as a uint32 - you'll just get it wrong (as I did :-).
Second attempt to fix the Apple client issues.
Jeremy.
(This used to be commit d2aa5bc7aaa9fe11fa4748f99e4ba49be08aa639)

source3/include/rpc_dce.h
source3/rpc_parse/parse_rpc.c

index 68cc55bf31a7634d7a7161d23bf3f080252b22c0..abc85035ea5cc911fd36764ffc315a5cf752f626 100644 (file)
@@ -231,7 +231,7 @@ typedef struct rpc_context {
 /* RPC_BIND_REQ - ms req bind */
 typedef struct rpc_bind_req_info {
        RPC_HDR_BBA bba;
-       uint32 num_contexts;    /* the number of contexts */
+       uint8 num_contexts;    /* the number of contexts */
        RPC_CONTEXT *rpc_context;
 } RPC_HDR_RB;
 
index ef5c230d2d9b04a5f8668ece36eb7bd5348fb0aa..3c1097587660c503ddc107b70c66c189cb84bb96 100644 (file)
@@ -463,10 +463,10 @@ BOOL smb_io_rpc_hdr_rb(const char *desc, RPC_HDR_RB *rpc, prs_struct *ps, int de
        if(!smb_io_rpc_hdr_bba("", &rpc->bba, ps, depth))
                return False;
 
-       if(!prs_uint32("num_contexts", ps, depth, &rpc->num_contexts))
+       if(!prs_uint8("num_contexts", ps, depth, &rpc->num_contexts))
                return False;
 
-       rpc->num_contexts &= 0xff; /* Actually a 1 byte field.. */
+       /* 3 pad bytes following - will be mopped up by the prs_align in smb_io_rpc_context(). */
 
        /* num_contexts must not be zero. */
        if (rpc->num_contexts == 0)