summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/include/proto.h11
-rw-r--r--source3/include/rpc_dce.h62
-rw-r--r--source3/rpc_parse/parse_rpc.c282
3 files changed, 0 insertions, 355 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 0fbe70a89c..d7b70cb4b2 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5102,20 +5102,9 @@ const struct ndr_interface_table *get_iface_from_syntax(
const struct ndr_syntax_id *syntax);
const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx,
const struct ndr_syntax_id *syntax);
-void init_rpc_hdr(RPC_HDR *hdr, enum dcerpc_pkt_type pkt_type, uint8 flags,
- uint32 call_id, int data_len, int auth_len);
-bool smb_io_rpc_hdr(const char *desc, RPC_HDR *rpc, prs_struct *ps, int depth);
NTSTATUS dcerpc_pull_dcerpc_bind(TALLOC_CTX *mem_ctx,
const DATA_BLOB *blob,
struct dcerpc_bind *r);
-void init_rpc_hdr_ba(RPC_HDR_BA *rpc,
- uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
- const char *pipe_addr,
- uint8 num_results, uint16 result, uint16 reason,
- const struct ndr_syntax_id *transfer);
-bool smb_io_rpc_hdr_ba(const char *desc, RPC_HDR_BA *rpc, prs_struct *ps, int depth);
-void init_rpc_hdr_req(RPC_HDR_REQ *hdr, uint32 alloc_hint, uint16 opnum);
-bool smb_io_rpc_hdr_req(const char *desc, RPC_HDR_REQ *rpc, prs_struct *ps, int depth);
bool smb_io_rpc_hdr_resp(const char *desc, RPC_HDR_RESP *rpc, prs_struct *ps, int depth);
void init_rpc_hdr_auth(RPC_HDR_AUTH *rai,
uint8 auth_type, uint8 auth_level,
diff --git a/source3/include/rpc_dce.h b/source3/include/rpc_dce.h
index f43976c4db..202382781e 100644
--- a/source3/include/rpc_dce.h
+++ b/source3/include/rpc_dce.h
@@ -33,27 +33,8 @@
#define RPC_IFACE_LEN (UUID_SIZE + 4)
-/* RPC_HDR - dce rpc header */
-typedef struct rpc_hdr_info {
- uint8 major; /* 5 - RPC major version */
- uint8 minor; /* 0 - RPC minor version */
- uint8 pkt_type; /* dcerpc_pkt_type - RPC response packet */
- uint8 flags; /* DCE/RPC flags */
- uint8 pack_type[4]; /* 0x1000 0000 - little-endian packed data representation */
- uint16 frag_len; /* fragment length - data size (bytes) inc header and tail. */
- uint16 auth_len; /* 0 - authentication length */
- uint32 call_id; /* call identifier. matches 12th uint32 of incoming RPC data. */
-} RPC_HDR;
-
#define RPC_HEADER_LEN 16
-/* RPC_HDR_REQ - ms request rpc header */
-typedef struct rpc_hdr_req_info {
- uint32 alloc_hint; /* allocation hint - data size (bytes) minus header and tail. */
- uint16 context_id; /* presentation context identifier */
- uint16 opnum; /* opnum */
-} RPC_HDR_REQ;
-
#define RPC_HDR_REQ_LEN 8
/* RPC_HDR_RESP - ms response rpc header */
@@ -66,28 +47,6 @@ typedef struct rpc_hdr_resp_info {
#define RPC_HDR_RESP_LEN 8
-/* this seems to be the same string name depending on the name of the pipe,
- * but is more likely to be linked to the interface name
- * "srvsvc", "\\PIPE\\ntsvcs"
- * "samr", "\\PIPE\\lsass"
- * "wkssvc", "\\PIPE\\wksvcs"
- * "NETLOGON", "\\PIPE\\NETLOGON"
- */
-/* RPC_ADDR_STR */
-typedef struct rpc_addr_info {
- uint16 len; /* length of the string including null terminator */
- fstring str; /* the string above in single byte, null terminated form */
-} RPC_ADDR_STR;
-
-/* RPC_HDR_BBA - bind acknowledge, and alter context response. */
-typedef struct rpc_hdr_bba_info {
- uint16 max_tsize; /* maximum transmission fragment size (0x1630) */
- uint16 max_rsize; /* max receive fragment size (0x1630) */
- uint32 assoc_gid; /* associated group id (0x0) */
-} RPC_HDR_BBA;
-
-#define RPC_HDR_BBA_LEN 8
-
/* RPC_HDR_AUTH */
typedef struct rpc_hdr_auth_info {
uint8 auth_type; /* See XXX_AUTH_TYPE above. */
@@ -99,25 +58,4 @@ typedef struct rpc_hdr_auth_info {
#define RPC_HDR_AUTH_LEN 8
-/* RPC_RESULTS - can only cope with one reason, right now... */
-typedef struct rpc_results_info {
- /* uint8[] # 4-byte alignment padding, against SMB header */
-
- uint8 num_results; /* the number of results (0x01) */
-
- /* uint8[] # 4-byte alignment padding, against SMB header */
-
- uint16 result; /* result (0x00 = accept) */
- uint16 reason; /* reason (0x00 = no reason specified) */
-} RPC_RESULTS;
-
-/* RPC_HDR_BA */
-typedef struct rpc_hdr_ba_info {
- RPC_HDR_BBA bba;
-
- RPC_ADDR_STR addr ; /* the secondary address string, as described earlier */
- RPC_RESULTS res ; /* results and reasons */
- struct ndr_syntax_id transfer; /* the transfer syntax from the request */
-} RPC_HDR_BA;
-
#endif /* _DCE_RPC_H */
diff --git a/source3/rpc_parse/parse_rpc.c b/source3/rpc_parse/parse_rpc.c
index 623e867801..8ece183251 100644
--- a/source3/rpc_parse/parse_rpc.c
+++ b/source3/rpc_parse/parse_rpc.c
@@ -27,168 +27,6 @@
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_PARSE
-/*******************************************************************
- Inits an RPC_HDR structure.
-********************************************************************/
-
-void init_rpc_hdr(RPC_HDR *hdr, enum dcerpc_pkt_type pkt_type, uint8 flags,
- uint32 call_id, int data_len, int auth_len)
-{
- hdr->major = 5; /* RPC version 5 */
- hdr->minor = 0; /* minor version 0 */
- hdr->pkt_type = pkt_type; /* RPC packet type */
- hdr->flags = flags; /* dce/rpc flags */
- hdr->pack_type[0] = 0x10; /* little-endian data representation */
- hdr->pack_type[1] = 0; /* packed data representation */
- hdr->pack_type[2] = 0; /* packed data representation */
- hdr->pack_type[3] = 0; /* packed data representation */
- hdr->frag_len = data_len; /* fragment length, fill in later */
- hdr->auth_len = auth_len; /* authentication length */
- hdr->call_id = call_id; /* call identifier - match incoming RPC */
-}
-
-/*******************************************************************
- Reads or writes an RPC_HDR structure.
-********************************************************************/
-
-bool smb_io_rpc_hdr(const char *desc, RPC_HDR *rpc, prs_struct *ps, int depth)
-{
- if (rpc == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "smb_io_rpc_hdr");
- depth++;
-
- if(!prs_uint8 ("major ", ps, depth, &rpc->major))
- return False;
-
- if(!prs_uint8 ("minor ", ps, depth, &rpc->minor))
- return False;
- if(!prs_uint8 ("pkt_type ", ps, depth, &rpc->pkt_type))
- return False;
- if(!prs_uint8 ("flags ", ps, depth, &rpc->flags))
- return False;
-
- /* We always marshall in little endian format. */
- if (MARSHALLING(ps))
- rpc->pack_type[0] = 0x10;
-
- if(!prs_uint8("pack_type0", ps, depth, &rpc->pack_type[0]))
- return False;
- if(!prs_uint8("pack_type1", ps, depth, &rpc->pack_type[1]))
- return False;
- if(!prs_uint8("pack_type2", ps, depth, &rpc->pack_type[2]))
- return False;
- if(!prs_uint8("pack_type3", ps, depth, &rpc->pack_type[3]))
- return False;
-
- /*
- * If reading and pack_type[0] == 0 then the data is in big-endian
- * format. Set the flag in the prs_struct to specify reverse-endainness.
- */
-
- if (UNMARSHALLING(ps) && rpc->pack_type[0] == 0) {
- DEBUG(10,("smb_io_rpc_hdr: PDU data format is big-endian. Setting flag.\n"));
- prs_set_endian_data(ps, RPC_BIG_ENDIAN);
- }
-
- if(!prs_uint16("frag_len ", ps, depth, &rpc->frag_len))
- return False;
- if(!prs_uint16("auth_len ", ps, depth, &rpc->auth_len))
- return False;
- if(!prs_uint32("call_id ", ps, depth, &rpc->call_id))
- return False;
- return True;
-}
-
-/*******************************************************************
- Reads or writes an struct ndr_syntax_id structure.
-********************************************************************/
-
-static bool smb_io_rpc_iface(const char *desc, struct ndr_syntax_id *ifc,
- prs_struct *ps, int depth)
-{
- if (ifc == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "smb_io_rpc_iface");
- depth++;
-
- if (!prs_align(ps))
- return False;
-
- if (!smb_io_uuid( "uuid", &ifc->uuid, ps, depth))
- return False;
-
- if(!prs_uint32 ("version", ps, depth, &ifc->if_version))
- return False;
-
- return True;
-}
-
-/*******************************************************************
- Inits an RPC_ADDR_STR structure.
-********************************************************************/
-
-static void init_rpc_addr_str(RPC_ADDR_STR *str, const char *name)
-{
- str->len = strlen(name) + 1;
- fstrcpy(str->str, name);
-}
-
-/*******************************************************************
- Reads or writes an RPC_ADDR_STR structure.
-********************************************************************/
-
-static bool smb_io_rpc_addr_str(const char *desc, RPC_ADDR_STR *str, prs_struct *ps, int depth)
-{
- if (str == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "smb_io_rpc_addr_str");
- depth++;
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint16 ( "len", ps, depth, &str->len))
- return False;
- if(!prs_uint8s (True, "str", ps, depth, (uchar*)str->str, MIN(str->len, sizeof(str->str)) ))
- return False;
- return True;
-}
-
-/*******************************************************************
- Inits an RPC_HDR_BBA structure.
-********************************************************************/
-
-static void init_rpc_hdr_bba(RPC_HDR_BBA *bba, uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid)
-{
- bba->max_tsize = max_tsize; /* maximum transmission fragment size (0x1630) */
- bba->max_rsize = max_rsize; /* max receive fragment size (0x1630) */
- bba->assoc_gid = assoc_gid; /* associated group id (0x0) */
-}
-
-/*******************************************************************
- Reads or writes an RPC_HDR_BBA structure.
-********************************************************************/
-
-static bool smb_io_rpc_hdr_bba(const char *desc, RPC_HDR_BBA *rpc, prs_struct *ps, int depth)
-{
- if (rpc == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "smb_io_rpc_hdr_bba");
- depth++;
-
- if(!prs_uint16("max_tsize", ps, depth, &rpc->max_tsize))
- return False;
- if(!prs_uint16("max_rsize", ps, depth, &rpc->max_rsize))
- return False;
- if(!prs_uint32("assoc_gid", ps, depth, &rpc->assoc_gid))
- return False;
- return True;
-}
-
NTSTATUS dcerpc_pull_dcerpc_bind(TALLOC_CTX *mem_ctx,
const DATA_BLOB *blob,
struct dcerpc_bind *r)
@@ -205,126 +43,6 @@ NTSTATUS dcerpc_pull_dcerpc_bind(TALLOC_CTX *mem_ctx,
}
/*******************************************************************
- Inits an RPC_RESULTS structure.
-
- lkclXXXX only one reason at the moment!
-********************************************************************/
-
-static void init_rpc_results(RPC_RESULTS *res,
- uint8 num_results, uint16 result, uint16 reason)
-{
- res->num_results = num_results; /* the number of results (0x01) */
- res->result = result ; /* result (0x00 = accept) */
- res->reason = reason ; /* reason (0x00 = no reason specified) */
-}
-
-/*******************************************************************
- Reads or writes an RPC_RESULTS structure.
-
- lkclXXXX only one reason at the moment!
-********************************************************************/
-
-static bool smb_io_rpc_results(const char *desc, RPC_RESULTS *res, prs_struct *ps, int depth)
-{
- if (res == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "smb_io_rpc_results");
- depth++;
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint8 ("num_results", ps, depth, &res->num_results))
- return False;
-
- if(!prs_align(ps))
- return False;
-
- if(!prs_uint16("result ", ps, depth, &res->result))
- return False;
- if(!prs_uint16("reason ", ps, depth, &res->reason))
- return False;
- return True;
-}
-
-/*******************************************************************
- Init an RPC_HDR_BA structure.
-
- lkclXXXX only one reason at the moment!
-
-********************************************************************/
-
-void init_rpc_hdr_ba(RPC_HDR_BA *rpc,
- uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
- const char *pipe_addr,
- uint8 num_results, uint16 result, uint16 reason,
- const struct ndr_syntax_id *transfer)
-{
- init_rpc_hdr_bba (&rpc->bba, max_tsize, max_rsize, assoc_gid);
- init_rpc_addr_str(&rpc->addr, pipe_addr);
- init_rpc_results (&rpc->res, num_results, result, reason);
-
- /* the transfer syntax from the request */
- memcpy(&rpc->transfer, transfer, sizeof(rpc->transfer));
-}
-
-/*******************************************************************
- Reads or writes an RPC_HDR_BA structure.
-********************************************************************/
-
-bool smb_io_rpc_hdr_ba(const char *desc, RPC_HDR_BA *rpc, prs_struct *ps, int depth)
-{
- if (rpc == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "smb_io_rpc_hdr_ba");
- depth++;
-
- if(!smb_io_rpc_hdr_bba("", &rpc->bba, ps, depth))
- return False;
- if(!smb_io_rpc_addr_str("", &rpc->addr, ps, depth))
- return False;
- if(!smb_io_rpc_results("", &rpc->res, ps, depth))
- return False;
- if(!smb_io_rpc_iface("", &rpc->transfer, ps, depth))
- return False;
- return True;
-}
-
-/*******************************************************************
- Init an RPC_HDR_REQ structure.
-********************************************************************/
-
-void init_rpc_hdr_req(RPC_HDR_REQ *hdr, uint32 alloc_hint, uint16 opnum)
-{
- hdr->alloc_hint = alloc_hint; /* allocation hint */
- hdr->context_id = 0; /* presentation context identifier */
- hdr->opnum = opnum; /* opnum */
-}
-
-/*******************************************************************
- Reads or writes an RPC_HDR_REQ structure.
-********************************************************************/
-
-bool smb_io_rpc_hdr_req(const char *desc, RPC_HDR_REQ *rpc, prs_struct *ps, int depth)
-{
- if (rpc == NULL)
- return False;
-
- prs_debug(ps, depth, desc, "smb_io_rpc_hdr_req");
- depth++;
-
- if(!prs_uint32("alloc_hint", ps, depth, &rpc->alloc_hint))
- return False;
- if(!prs_uint16("context_id", ps, depth, &rpc->context_id))
- return False;
- if(!prs_uint16("opnum ", ps, depth, &rpc->opnum))
- return False;
- return True;
-}
-
-/*******************************************************************
Reads or writes an RPC_HDR_RESP structure.
********************************************************************/