diff options
author | Jim McDonough <jmcd@samba.org> | 2003-10-20 18:35:12 +0000 |
---|---|---|
committer | Jim McDonough <jmcd@samba.org> | 2003-10-20 18:35:12 +0000 |
commit | 71dcdf54e60204d6b499d25d8759ed20fc7a021a (patch) | |
tree | 97578efb50eb0b8c2ed09b0cb7fe78846e03a9dc /source/rpc_parse | |
parent | f81fdcc935317f66d562d485a40948c2a8bcbb21 (diff) | |
download | samba-71dcdf54e60204d6b499d25d8759ed20fc7a021a.tar.gz samba-71dcdf54e60204d6b499d25d8759ed20fc7a021a.tar.xz samba-71dcdf54e60204d6b499d25d8759ed20fc7a021a.zip |
Several updates:
- add support for named pipe and netbios queries in parse code
- fix map request structure...unknown byte was alignment
- add sample of named pipe over netbios query in rpcclient (comment only)
Diffstat (limited to 'source/rpc_parse')
-rw-r--r-- | source/rpc_parse/parse_epmapper.c | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/source/rpc_parse/parse_epmapper.c b/source/rpc_parse/parse_epmapper.c index 368ea319bd2..2bdb755deb8 100644 --- a/source/rpc_parse/parse_epmapper.c +++ b/source/rpc_parse/parse_epmapper.c @@ -29,6 +29,8 @@ BOOL epm_io_handle(const char *desc, EPM_HANDLE *handle, prs_struct *ps, int depth) { + if (!prs_align(ps)) + return False; if (!prs_uint8s(False, "data", ps, depth, handle->data, sizeof(handle->data))) @@ -67,6 +69,11 @@ NTSTATUS init_epm_floor(EPM_FLOOR *floor, uint8 protocol) case EPM_FLOOR_IP: floor->rhs.length = sizeof(floor->rhs.ip.addr); break; + case EPM_FLOOR_NMPIPES: + case EPM_FLOOR_LRPC: + case EPM_FLOOR_NETBIOS: + floor->rhs.length = strlen(floor->rhs.string) + 1; + break; default: break; } @@ -114,6 +121,33 @@ NTSTATUS init_epm_floor_ip(EPM_FLOOR *floor, uint8 addr[4]) } /******************************************************************* + inits an EPM_FLOOR structure for named pipe +********************************************************************/ +NTSTATUS init_epm_floor_np(EPM_FLOOR *floor, const char *pipe_name) +{ + safe_strcpy(floor->rhs.string, pipe_name, sizeof(floor->rhs.string)-1); + return init_epm_floor(floor, EPM_FLOOR_NMPIPES); +} + +/******************************************************************* + inits an EPM_FLOOR structure for named pipe +********************************************************************/ +NTSTATUS init_epm_floor_lrpc(EPM_FLOOR *floor, const char *pipe_name) +{ + safe_strcpy(floor->rhs.string, pipe_name, sizeof(floor->rhs.string)-1); + return init_epm_floor(floor, EPM_FLOOR_LRPC); +} + +/******************************************************************* + inits an EPM_FLOOR structure for named pipe +********************************************************************/ +NTSTATUS init_epm_floor_nb(EPM_FLOOR *floor, char *host_name) +{ + safe_strcpy(floor->rhs.string, host_name, sizeof(floor->rhs.string)-1); + return init_epm_floor(floor, EPM_FLOOR_NETBIOS); +} + +/******************************************************************* reads and writes EPM_FLOOR. ********************************************************************/ BOOL epm_io_floor(const char *desc, EPM_FLOOR *floor, @@ -156,6 +190,14 @@ BOOL epm_io_floor(const char *desc, EPM_FLOOR *floor, sizeof(floor->rhs.ip.addr))) return False; break; + case EPM_FLOOR_NMPIPES: + case EPM_FLOOR_LRPC: + case EPM_FLOOR_NETBIOS: + if (!prs_uint8s(False, "string", ps, depth, + floor->rhs.string, + floor->rhs.length)) + return False; + break; default: break; } @@ -227,9 +269,6 @@ BOOL epm_io_tower(const char *desc, EPM_TOWER *tower, return False; } - if (!prs_uint8("unknown", ps, depth, &tower->unknown)) - return False; - return True; } |