[SCM] Samba Shared Repository - branch master updated
Günther Deschner
gd at samba.org
Tue Feb 11 10:31:04 MST 2014
The branch, master has been updated
via da9b3c1 s4:rpc_server/epmapper: make use of dcerpc_binding_dup() in build_ep_list()
via 47fa7c8 s4:libnet: use dcerpc_binding_dup() in continue_epm_map_binding_send()
via e5e8757 s4:libnet: make use of dcerpc_binding_dup() in libnet_join.c
via e42a674 s4:librpc/rpc: make use of dcerpc_binding_dup() in dcerpc_epm_map_binding_send()
via 4340590 s4:librpc/rpc: fix memory hierachie in dcerpc_epm_map_binding_send()
via 4cf691c s4:librpc/rpc: avoid some indentation levels in dcerpc_epm_map_binding_send()
via 6e813ab s4:librpc/rpc: use dcerpc_binding_dup() in dcerpc_schannel_key_send()
via 9a084b4 librpc/rpc: add dcerpc_transport_by_name()
via ded9576 s3:rpc_client: use address "0.0.0.0" and port "135" for epmapper requests
via 98b08df librpc/rpc: simplify dcerpc_binding_build_tower()
via d89ff85 librpc/rpc: fix dcerpc_floor_set_rhs_data() with NULL data.
via b5eb5d9 librpc/rpc: handle dcerpc_binding->host == NULL in dcerpc_floor_get_rhs_data()
via e977884 s4:torture: handle binding_struct->host == NULL in torture_parse_target()
via cd4ae0f s4:librpc/test: an empty hostname means b->host == NULL
via ca6da61 s4:rpc_server: fix talloc hierachie dcesrv_context => dcesrv_endpoint => dcesrv_if_list
via ab32b67 s3:srv_epmapper: only replace ipv4 addresses in _epm_Lookup() and _epm_Map()
via 4f344f3 s3:srv_epmapper: fix logic in endpoints_match()
via ce973f7 s4:torture/rpc: fix rpc.scanner test
via 9a6201e s4:torture/rpc: pass object down to test_Map_display()
via 81add42 s4:torture/rpc: print out the object guid in rpc.epmapper.epmapper.Lookup_simple
via 48148a4 s4:torture/rpc: test all auth_types (8bit) in rpc.mgmt
via 2bc1734 s4:torture/rpc: fix rpc.mgmt test
via 312860e s4:torture/rpc: remove unused variable in session_key.c
via 8eb7ad2 s4:torture/rpc: remove unused variable in frsapi.c
via e795b6c s4:torture/rpc: remove unused variable in dsgetinfo.c
via 3fcb659 s4:torture/rpc: remove unused variable in backupkey.c
via 42eb407 s4:torture/rpc: fix compiler warnings in spoolss.c
via e48b641 s4:torture/drs: remove unused variables.
via 129c64f s4:torture/rpc: initialize struct dcerpc_binding completely
via f1a1adc s3:rpcclient: initialize struct dcerpc_binding completely
via a22cc6b s3:rpc_server: initialize struct dcerpc_binding completely
via 47d7b8d s3:dcerpc_up: avoid useless talloc_zero() calls
via f9cc660 s3:dcerpc_ep: make ep_register() more tolerant regarding the passes binding vector
via 754f2eb s3:dcerpc_ep: only use the explicitly passed object_guid
via 09d3a0c s3:dcerpc_ep: only use an array of 'struct dcerpc_binding *'
via 166766e s3:dcerpc_ep: make struct dcerpc_binding_vector private
via 6ab7621 librpc/rpc: let dcerpc_floor_get_rhs_data() return 'char *'
via 327c060 s4:librpc/rpc: remove prototypes which are already in librpc/rpc/rpc_common.h
via d791f33 s4:librpc/rpc: use the correct _recv function in continue_open_pipe()
via d6c9150 librpc/ndr: add ndr_table_by_syntax()
via 8e4a786 s3:rpcclient: add witness command
via c677498 librpc/idl: add witness.idl
via ffd0585 selftest: let "make testenv SCREEN=1" use tmux if it is running
via 34e6d79 s3:rpc_server: check verification trailer
via 1eef03a s3:rpc_server: check header of each packet fragment
via 6836ffc s3:rpc_server: only become the user if we have a valid context_id
via b5f3020 s3:rpc_server: minor refactoring of process_request_pdu()
via aeab960 s3:librpc/rpc: only propose header signing if we use sign or seal
via 0856c63 s4:rpc_server: check verification trailer
via b58f06c s4:rpc_server: check header of each packet fragment
via 7676bf3 s4:rpc_server: verifiy the auth_info against the per connection values
via 2e093cc s4:librpc/rpc: only propose header signing if we use sign or seal
via 1137d62 s4:librpc/rpc: add forward declaration for struct resolve_context
via 1fd4842 librpc/rpc: add dcerpc_sec_verification_trailer_check()
via 9c5664f librpc/rpc: add dcerpc_sec_vt_header2_[from_ncacn_packet|equal]()
via 3b2b0aa4 librpc/ndr: add ndr_syntax_id_[from|to]_string()
via 7b57170 librpc/ndr: add ndr_pull_append/pop()
via 53e0ced librpc/ndr: add support for a shallow copy to ndr_pull_subcontext_start/end
via ef5e0b7 librpc/ndr: remember INCOMPLETE_BUFFER missing bytes in relative_highest_offset
via e2a6214 librpc/ndr: add NDR_ERR_INCOMPLETE_BUFFER and LIBNDR_FLAG_INCOMPLETE_BUFFER
via 91b3e41 librpc/ndr: fix headers in ndr_dcerpc.c
via 8507885 lib/ldb-samba: add more attributes with LDB_SYNTAX_SAMBA_GUID
from 41ff0f4 winbind4: Remove unused winbind_get_idmap irpc operation
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit da9b3c15d52cd3b2acccd376a41bea828292668d
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 02:33:03 2014 +0100
s4:rpc_server/epmapper: make use of dcerpc_binding_dup() in build_ep_list()
We should not alter the callers binding.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
Autobuild-User(master): Günther Deschner <gd at samba.org>
Autobuild-Date(master): Tue Feb 11 18:30:55 CET 2014 on sn-devel-104
commit 47fa7c83a2d9614973c3aa0addba4165055b9f75
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Feb 6 18:52:20 2014 +0100
s4:libnet: use dcerpc_binding_dup() in continue_epm_map_binding_send()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit e5e8757887bbfbc063a0a54dee3021e2e2486717
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 22:04:11 2014 +0100
s4:libnet: make use of dcerpc_binding_dup() in libnet_join.c
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit e42a6746257953c35bec3bc5877d7bcd7d77b3aa
Author: Stefan Metzmacher <metze at samba.org>
Date: Sat Jan 25 11:14:36 2014 +0100
s4:librpc/rpc: make use of dcerpc_binding_dup() in dcerpc_epm_map_binding_send()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 4340590ae90956c5c73141ffe56e499fdd14f376
Author: Stefan Metzmacher <metze at samba.org>
Date: Sat Jan 25 11:13:26 2014 +0100
s4:librpc/rpc: fix memory hierachie in dcerpc_epm_map_binding_send()
We should allocate on 's' the internal state, not on the callers
mem_ctx.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 4cf691ce1fb2af5413b2bb16afd4b4be0a8e3f35
Author: Stefan Metzmacher <metze at samba.org>
Date: Sat Jan 25 10:54:45 2014 +0100
s4:librpc/rpc: avoid some indentation levels in dcerpc_epm_map_binding_send()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 6e813ab89763892435e9a4c531950f71de814e6d
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Feb 6 18:51:45 2014 +0100
s4:librpc/rpc: use dcerpc_binding_dup() in dcerpc_schannel_key_send()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 9a084b4ab286d0ca73ce6ebb374e660da0820957
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 23 12:03:46 2014 +0100
librpc/rpc: add dcerpc_transport_by_name()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit ded957614bf70560f3ffa6b6021eba37f2e2dbbb
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 09:23:40 2014 +0100
s3:rpc_client: use address "0.0.0.0" and port "135" for epmapper requests
Note: binding->host = NULL lets dcerpc_binding_build_tower()
use "0.0.0.0".
This matches Windows clients.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 98b08dfb6db0accaf7c893adf695e1d0f0b05ade
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 23:05:48 2014 +0100
librpc/rpc: simplify dcerpc_binding_build_tower()
dcerpc_floor_set_rhs_data() handles the special cases now
and we keep the 'host' part unmodified except
EPM_PROTOCOL_IP addresses. No special '\\' handling anymore.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit d89ff8575dbc223019ee62fc65ec0ede593635f7
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 23:03:03 2014 +0100
librpc/rpc: fix dcerpc_floor_set_rhs_data() with NULL data.
For EPM_PROTOCOL_IP we can only marshal ipv4 addresses,
everything else gets '0.0.0.0' (4 zero bytes on the wire).
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit b5eb5d97c28ea9a13b1d7f06599626f4c4ba14f4
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Feb 10 18:56:59 2014 +0100
librpc/rpc: handle dcerpc_binding->host == NULL in dcerpc_floor_get_rhs_data()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit e977884b9bbaebd13fd2ab64fa452b942073d025
Author: Stefan Metzmacher <metze at samba.org>
Date: Sun Jan 26 01:55:52 2014 +0100
s4:torture: handle binding_struct->host == NULL in torture_parse_target()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit cd4ae0f7f3d810a44afd184e08c95a89fa35e80c
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 24 09:20:50 2014 +0100
s4:librpc/test: an empty hostname means b->host == NULL
In future we'll not allow b->host == "" any more.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit ca6da61a52248037fe8a0e747695b3d7525f4647
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Feb 6 18:59:53 2014 +0100
s4:rpc_server: fix talloc hierachie dcesrv_context => dcesrv_endpoint => dcesrv_if_list
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit ab32b67bbb86ef487bd1faa8120314a2418ab144
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 31 21:10:41 2014 +0100
s3:srv_epmapper: only replace ipv4 addresses in _epm_Lookup() and _epm_Map()
The floor data for EPM_PROTOCOL_IP only handles a 4 byte ipv4 address.
"0.0.0.0" is used for ipv6 and hostnames.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 4f344f3b80505f47549d933e3a66d5a9b5dd85bb
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 31 23:20:05 2014 +0100
s3:srv_epmapper: fix logic in endpoints_match()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit ce973f78af956c075156bb091fd4ef86281baa16
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 24 11:31:25 2014 +0100
s4:torture/rpc: fix rpc.scanner test
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 9a6201e6daf79f3c679227bd8fb41522f6dd8247
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 23:00:40 2014 +0100
s4:torture/rpc: pass object down to test_Map_display()
We also pass the given tower unmodified first.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 81add4222a73728b2b6c42e07921cffb5a636c36
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 24 11:00:04 2014 +0100
s4:torture/rpc: print out the object guid in rpc.epmapper.epmapper.Lookup_simple
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 48148a454d8ba6b642bd19ba0e3ab2c58b8986ea
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 24 10:36:37 2014 +0100
s4:torture/rpc: test all auth_types (8bit) in rpc.mgmt
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 2bc1734c94f171f83ea7a64e95ab4ea2160763c0
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 24 10:31:32 2014 +0100
s4:torture/rpc: fix rpc.mgmt test
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 312860e6a6ec13c7b54e080dfd66170ba89c7677
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 10:08:48 2014 +0100
s4:torture/rpc: remove unused variable in session_key.c
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 8eb7ad289c844c6def4aeeb6fffbbde2549108cb
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 10:08:48 2014 +0100
s4:torture/rpc: remove unused variable in frsapi.c
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit e795b6c6ecb144c84fa9e72705f970037623d91a
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 10:08:48 2014 +0100
s4:torture/rpc: remove unused variable in dsgetinfo.c
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 3fcb659f33a2d295d5e09d33e74df38957b422f2
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 10:08:48 2014 +0100
s4:torture/rpc: remove unused variable in backupkey.c
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 42eb40792a2000b9ee5610306ea1f4eda1760527
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 09:52:49 2014 +0100
s4:torture/rpc: fix compiler warnings in spoolss.c
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit e48b6418b211467c915b0556126461b0fc9c21b1
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 10:07:59 2014 +0100
s4:torture/drs: remove unused variables.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 129c64f04701bce7b36bf4b8e19b90b0bc4bdf89
Author: Stefan Metzmacher <metze at samba.org>
Date: Sun Jan 26 10:11:03 2014 +0100
s4:torture/rpc: initialize struct dcerpc_binding completely
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit f1a1adc04eb26beaf85d4af4e9b0caf4c5eec4a4
Author: Stefan Metzmacher <metze at samba.org>
Date: Sun Jan 26 10:10:37 2014 +0100
s3:rpcclient: initialize struct dcerpc_binding completely
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit a22cc6b53c2c6b2b59572123089397a60b9d8dc8
Author: Stefan Metzmacher <metze at samba.org>
Date: Sun Jan 26 10:09:49 2014 +0100
s3:rpc_server: initialize struct dcerpc_binding completely
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 47d7b8df44551c435b9924e9e39a9068ebbee2a1
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 09:54:24 2014 +0100
s3:dcerpc_up: avoid useless talloc_zero() calls
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit f9cc66055ddf09699b5bee229e10fdbf9ca5ce93
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 09:51:09 2014 +0100
s3:dcerpc_ep: make ep_register() more tolerant regarding the passes binding vector
We should take a copy and set the abstract syntax to from the given interface
before we construct the tower.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 754f2eba16822c998c9381d61da7bdfa9bac19ee
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 30 09:51:09 2014 +0100
s3:dcerpc_ep: only use the explicitly passed object_guid
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 09d3a0cda98b3b6b6ba4d618418a4f615f512b17
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Feb 7 15:50:29 2014 +0100
s3:dcerpc_ep: only use an array of 'struct dcerpc_binding *'
In future we should not dereference struct dcerpc_binding
and just keep pointers.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 166766e7725d6b4820c3b50a88561b8d260baf56
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Feb 7 15:50:29 2014 +0100
s3:dcerpc_ep: make struct dcerpc_binding_vector private
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 6ab76219cd651f1ad30eaeff87a8878c91c6969a
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Feb 3 09:06:08 2014 +0100
librpc/rpc: let dcerpc_floor_get_rhs_data() return 'char *'
We don't return any "const char *" values here, so give the caller
a chance to talloc_free() the result.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 327c060666a8cf5213e0548acb2d2be6a93fbee2
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Feb 3 09:04:49 2014 +0100
s4:librpc/rpc: remove prototypes which are already in librpc/rpc/rpc_common.h
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit d791f3354e493bee764ca8b6ebdc3673d82e2987
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 11:06:21 2014 +0100
s4:librpc/rpc: use the correct _recv function in continue_open_pipe()
We start with dcerpc_pipe_open_unix_stream_send() so we need
to call dcerpc_pipe_open_unix_stream_recv().
It was just luck that it worked before...
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit d6c91502c061fef9c42eaf99418ec427e96b1c20
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Jan 24 10:28:05 2014 +0100
librpc/ndr: add ndr_table_by_syntax()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 8e4a78655a79d11055ba801046b715f0b0daad0b
Author: Gregor Beck <gbeck at sernet.de>
Date: Mon Aug 5 11:01:34 2013 +0200
s3:rpcclient: add witness command
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit c6774989e0a878f59f53fa1fe5439b881945a042
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Nov 2 16:27:46 2012 +0100
librpc/idl: add witness.idl
See [MS-SWN] for the details.
Pair-Programmed-With: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit ffd0585dd2db0af298fdbe1c7d5aba3cd3699bbc
Author: Gregor Beck <gbeck at sernet.de>
Date: Thu Dec 12 11:38:22 2013 +0100
selftest: let "make testenv SCREEN=1" use tmux if it is running
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 34e6d793520b465d4b94d837b2e902651b1a65be
Author: Gregor Beck <gbeck at sernet.de>
Date: Fri Jan 10 13:56:06 2014 +0100
s3:rpc_server: check verification trailer
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 1eef03aa93056f12d2614cfedee60461db3ac4a3
Author: Gregor Beck <gbeck at sernet.de>
Date: Thu Jan 9 13:55:27 2014 +0100
s3:rpc_server: check header of each packet fragment
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 6836ffc9fc088ea6c4444b9e4abfe2766a54f6a8
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jan 15 10:27:49 2014 +0100
s3:rpc_server: only become the user if we have a valid context_id
Pair-Programmed-With: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit b5f30205931a4b9d0b3b257d5855869e606f8b63
Author: Gregor Beck <gbeck at sernet.de>
Date: Thu Jan 9 10:15:31 2014 +0100
s3:rpc_server: minor refactoring of process_request_pdu()
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit aeab9602c07c8e7bf0daeb382fd9beadb884e6c7
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Jan 21 15:18:01 2014 +0100
s3:librpc/rpc: only propose header signing if we use sign or seal
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 0856c639f998e38238098581006e6f6a8df62725
Author: Gregor Beck <gbeck at sernet.de>
Date: Wed Jan 8 10:35:48 2014 +0100
s4:rpc_server: check verification trailer
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit b58f06c17be5aab57a1d419bf6db7df1c020f87e
Author: Gregor Beck <gbeck at sernet.de>
Date: Thu Jan 9 09:47:25 2014 +0100
s4:rpc_server: check header of each packet fragment
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 7676bf32a498ac844bd1c8631c1fa8a457ede3ef
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 9 10:59:01 2014 +0100
s4:rpc_server: verifiy the auth_info against the per connection values
Pair-Programmed-With: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 2e093cc0cc0ff14ff189947ab0a267f089fab97c
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 16 07:49:56 2014 +0100
s4:librpc/rpc: only propose header signing if we use sign or seal
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 1137d62d9d1f67d2721d3fc63f5770477d42dcec
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Jan 23 09:48:53 2014 +0100
s4:librpc/rpc: add forward declaration for struct resolve_context
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 1fd484270153ba8d47e95b8961db175d50b8b9cb
Author: Gregor Beck <gbeck at sernet.de>
Date: Wed Jan 8 09:50:33 2014 +0100
librpc/rpc: add dcerpc_sec_verification_trailer_check()
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 9c5664f58d1e8674ce5a53c6aa10d6343001b6c7
Author: Gregor Beck <gbeck at sernet.de>
Date: Mon Jan 13 13:33:09 2014 +0100
librpc/rpc: add dcerpc_sec_vt_header2_[from_ncacn_packet|equal]()
Pair-Programmed-With: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 3b2b0aa4d4bf07971ef016e5a2ce0fec84bbf144
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Feb 4 12:54:42 2014 +0100
librpc/ndr: add ndr_syntax_id_[from|to]_string()
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 7b5717058a7d7a93cda712efc7622a87d3980e48
Author: Stefan Metzmacher <metze at samba.org>
Date: Sat Sep 21 02:28:33 2013 +0200
librpc/ndr: add ndr_pull_append/pop()
They can be used to parse a fragmented NDR byte stream.
ndr_pull_append() appends more data that can be processed
and ndr_pull_pop() removed already processed data.
This will be used to implement dcerpc pipes, where we can get
a verify large amount of pipe chunks, once we processed a chunk
we can forget about the related data, but we may need to keep some
bytes in order to get the alignment right.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 53e0ceddff7a4e668242a2db53764fa962c71163
Author: Stefan Metzmacher <metze at samba.org>
Date: Sat Sep 21 21:58:05 2013 +0200
librpc/ndr: add support for a shallow copy to ndr_pull_subcontext_start/end
This will be usefull to try parsing DCERPC pipe chunks for
LIBNDR_FLAG_INCOMPLETE_BUFFER.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit ef5e0b7339ace6d5bf4771d196f8868171c02103
Author: Stefan Metzmacher <metze at samba.org>
Date: Sat Sep 21 22:30:25 2013 +0200
librpc/ndr: remember INCOMPLETE_BUFFER missing bytes in relative_highest_offset
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit e2a621466e740cc7fc2a659163f8895287c9a01e
Author: Stefan Metzmacher <metze at samba.org>
Date: Tue Mar 8 10:14:51 2011 +0100
librpc/ndr: add NDR_ERR_INCOMPLETE_BUFFER and LIBNDR_FLAG_INCOMPLETE_BUFFER
If we pull a pipe chunk we need a way to check if we
have enough bytes to parse the complete chunk.
Setting ndr_pull->flags |= LIBNDR_FLAG_INCOMPLETE_BUFFER
would change NDR_ERR_BUFSIZE (and later maybe others)
into NDR_ERR_INCOMPLETE_BUFFER.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 91b3e415d59feeb31a8255d147622a32e1bc64f1
Author: Gregor Beck <gbeck at sernet.de>
Date: Fri Jan 17 12:13:50 2014 +0100
librpc/ndr: fix headers in ndr_dcerpc.c
Pair-Programmed-With: Stefan Metzmacher <metze at samba.org>
Signed-off-by: Gregor Beck <gbeck at sernet.de>
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
commit 850788591b8d1530038d9277840e554ce53abf89
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jan 29 08:24:11 2014 +0100
lib/ldb-samba: add more attributes with LDB_SYNTAX_SAMBA_GUID
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Guenther Deschner <gd at samba.org>
-----------------------------------------------------------------------
Summary of changes:
lib/ldb-samba/ldif_handlers.c | 28 ++-
librpc/ABI/{ndr-0.0.2.sigs => ndr-0.0.3.sigs} | 4 +
librpc/idl/witness.idl | 110 ++++++
librpc/idl/wscript_build | 2 +-
librpc/ndr/libndr.h | 24 ++-
librpc/ndr/ndr.c | 136 +++++++-
librpc/ndr/ndr_dcerpc.c | 4 +-
librpc/ndr/ndr_misc.c | 47 +++
librpc/ndr/ndr_table.c | 14 +
librpc/ndr/ndr_table.h | 1 +
librpc/rpc/binding.c | 80 +++--
librpc/rpc/dcerpc_util.c | 192 ++++++++++
librpc/rpc/rpc_common.h | 44 +++-
librpc/wscript_build | 14 +-
selftest/in_screen | 6 +-
source3/librpc/rpc/dcerpc_ep.c | 68 ++--
source3/librpc/rpc/dcerpc_ep.h | 6 +-
source3/rpc_client/cli_pipe.c | 17 +-
source3/rpc_server/epmapper/srv_epmapper.c | 32 ++-
source3/rpc_server/rpc_ep_register.c | 1 +
source3/rpc_server/rpc_pipes.h | 3 +
source3/rpc_server/srv_pipe.c | 121 +++++--
source3/rpcclient/cmd_epmapper.c | 1 +
source3/rpcclient/cmd_witness.c | 504 +++++++++++++++++++++++++
source3/rpcclient/rpcclient.c | 2 +
source3/wscript_build | 4 +-
source4/libnet/libnet_join.c | 7 +-
source4/libnet/libnet_rpc.c | 6 +-
source4/librpc/rpc/dcerpc.h | 6 +-
source4/librpc/rpc/dcerpc_auth.c | 4 +-
source4/librpc/rpc/dcerpc_schannel.c | 4 +-
source4/librpc/rpc/dcerpc_secondary.c | 2 +-
source4/librpc/rpc/dcerpc_util.c | 67 ++--
source4/librpc/tests/binding_string.c | 3 +-
source4/rpc_server/dcerpc_server.c | 70 ++++-
source4/rpc_server/dcesrv_auth.c | 15 +
source4/rpc_server/epmapper/rpc_epmapper.c | 15 +-
source4/torture/drs/rpc/dssync.c | 12 +-
source4/torture/drs/rpc/msds_intid.c | 8 +-
source4/torture/rpc/backupkey.c | 49 ++--
source4/torture/rpc/dsgetinfo.c | 4 +-
source4/torture/rpc/epmapper.c | 26 +-
source4/torture/rpc/frsapi.c | 18 +-
source4/torture/rpc/mgmt.c | 5 +-
source4/torture/rpc/scanner.c | 42 ++-
source4/torture/rpc/session_key.c | 6 +-
source4/torture/rpc/spoolss.c | 20 +-
source4/torture/smbtorture.c | 4 +-
48 files changed, 1587 insertions(+), 271 deletions(-)
copy librpc/ABI/{ndr-0.0.2.sigs => ndr-0.0.3.sigs} (98%)
create mode 100644 librpc/idl/witness.idl
create mode 100644 source3/rpcclient/cmd_witness.c
Changeset truncated at 500 lines:
diff --git a/lib/ldb-samba/ldif_handlers.c b/lib/ldb-samba/ldif_handlers.c
index c7385f6..4425f86 100644
--- a/lib/ldb-samba/ldif_handlers.c
+++ b/lib/ldb-samba/ldif_handlers.c
@@ -1444,9 +1444,6 @@ static const struct {
const char *name;
const char *syntax;
} samba_attributes[] = {
- { "objectSid", LDB_SYNTAX_SAMBA_SID },
- { "securityIdentifier", LDB_SYNTAX_SAMBA_SID },
- { "tokenGroups", LDB_SYNTAX_SAMBA_SID },
{ "ntSecurityDescriptor", LDB_SYNTAX_SAMBA_SECURITY_DESCRIPTOR },
{ "oMSyntax", LDB_SYNTAX_SAMBA_INT32 },
{ "objectCategory", LDB_SYNTAX_SAMBA_OBJECT_CATEGORY },
@@ -1465,6 +1462,26 @@ static const struct {
/*
* these are extracted by searching
+ * (&(attributeSyntax=2.5.5.17)(omSyntax=4))
+ *
+ * Except: msAuthz-CentralAccessPolicyID as it might be a GUID see:
+ * adminDescription: For a Central Access Policy, this attribute defines a GUID t
+ * hat can be used to identify the set of policies when applied to a resource.
+ * Until we see a msAuthz-CentralAccessPolicyID value on a windows
+ * server, we ignore it here.
+ */
+ { "mS-DS-CreatorSID", LDB_SYNTAX_SAMBA_SID },
+ { "msDS-QuotaTrustee", LDB_SYNTAX_SAMBA_SID },
+ { "objectSid", LDB_SYNTAX_SAMBA_SID },
+ { "tokenGroups", LDB_SYNTAX_SAMBA_SID },
+ { "tokenGroupsGlobalAndUniversal", LDB_SYNTAX_SAMBA_SID },
+ { "tokenGroupsNoGCAcceptable", LDB_SYNTAX_SAMBA_SID },
+ { "securityIdentifier", LDB_SYNTAX_SAMBA_SID },
+ { "sIDHistory", LDB_SYNTAX_SAMBA_SID },
+ { "syncWithSID", LDB_SYNTAX_SAMBA_SID },
+
+ /*
+ * these are extracted by searching
* (&(attributeSyntax=2.5.5.10)(rangeLower=16)(rangeUpper=16)(omSyntax=4))
*/
{ "attributeSecurityGUID", LDB_SYNTAX_SAMBA_GUID },
@@ -1475,6 +1492,8 @@ static const struct {
{ "fRSVersionGUID", LDB_SYNTAX_SAMBA_GUID },
{ "implementedCategories", LDB_SYNTAX_SAMBA_GUID },
{ "msDS-AzObjectGuid", LDB_SYNTAX_SAMBA_GUID },
+ { "msDS-GenerationId", LDB_SYNTAX_SAMBA_GUID },
+ { "msDS-OptionalFeatureGUID", LDB_SYNTAX_SAMBA_GUID },
{ "msDFSR-ContentSetGuid", LDB_SYNTAX_SAMBA_GUID },
{ "msDFSR-ReplicationGroupGuid", LDB_SYNTAX_SAMBA_GUID },
{ "mSMQDigests", LDB_SYNTAX_SAMBA_GUID },
@@ -1491,13 +1510,14 @@ static const struct {
{ "msDFS-GenerationGUIDv2", LDB_SYNTAX_SAMBA_GUID },
{ "msDFS-LinkIdentityGUIDv2", LDB_SYNTAX_SAMBA_GUID },
{ "msDFS-NamespaceIdentityGUIDv2", LDB_SYNTAX_SAMBA_GUID },
+ { "msSPP-CSVLKSkuId", LDB_SYNTAX_SAMBA_GUID },
+ { "msSPP-KMSIds", LDB_SYNTAX_SAMBA_GUID },
/*
* these are known to be GUIDs
*/
{ "invocationId", LDB_SYNTAX_SAMBA_GUID },
{ "parentGUID", LDB_SYNTAX_SAMBA_GUID },
- { "msDS-OptionalFeatureGUID", LDB_SYNTAX_SAMBA_GUID },
/* These NDR encoded things we want to be able to read with --show-binary */
{ "dnsRecord", LDB_SYNTAX_SAMBA_DNSRECORD },
diff --git a/librpc/ABI/ndr-0.0.2.sigs b/librpc/ABI/ndr-0.0.3.sigs
similarity index 98%
copy from librpc/ABI/ndr-0.0.2.sigs
copy to librpc/ABI/ndr-0.0.3.sigs
index 66be5ba..d9c76f0 100644
--- a/librpc/ABI/ndr-0.0.2.sigs
+++ b/librpc/ABI/ndr-0.0.3.sigs
@@ -95,6 +95,7 @@ ndr_pull_NTTIME_hyper: enum ndr_err_code (struct ndr_pull *, int, NTTIME *)
ndr_pull_WERROR: enum ndr_err_code (struct ndr_pull *, int, WERROR *)
ndr_pull_advance: enum ndr_err_code (struct ndr_pull *, uint32_t)
ndr_pull_align: enum ndr_err_code (struct ndr_pull *, size_t)
+ndr_pull_append: enum ndr_err_code (struct ndr_pull *, DATA_BLOB *)
ndr_pull_array_length: enum ndr_err_code (struct ndr_pull *, const void *)
ndr_pull_array_size: enum ndr_err_code (struct ndr_pull *, const void *)
ndr_pull_array_uint8: enum ndr_err_code (struct ndr_pull *, int, uint8_t *, uint32_t)
@@ -124,6 +125,7 @@ ndr_pull_netr_SamDatabaseID: enum ndr_err_code (struct ndr_pull *, int, enum net
ndr_pull_netr_SchannelType: enum ndr_err_code (struct ndr_pull *, int, enum netr_SchannelType *)
ndr_pull_pointer: enum ndr_err_code (struct ndr_pull *, int, void **)
ndr_pull_policy_handle: enum ndr_err_code (struct ndr_pull *, int, struct policy_handle *)
+ndr_pull_pop: enum ndr_err_code (struct ndr_pull *)
ndr_pull_ref_ptr: enum ndr_err_code (struct ndr_pull *, uint32_t *)
ndr_pull_relative_ptr1: enum ndr_err_code (struct ndr_pull *, const void *, uint32_t)
ndr_pull_relative_ptr2: enum ndr_err_code (struct ndr_pull *, const void *)
@@ -238,7 +240,9 @@ ndr_size_union: size_t (const void *, int, uint32_t, ndr_push_flags_fn_t)
ndr_string_array_size: size_t (struct ndr_push *, const char *)
ndr_string_length: uint32_t (const void *, uint32_t)
ndr_syntax_id_equal: bool (const struct ndr_syntax_id *, const struct ndr_syntax_id *)
+ndr_syntax_id_from_string: bool (const char *, struct ndr_syntax_id *)
ndr_syntax_id_null: uuid = {time_low = 0, time_mid = 0, time_hi_and_version = 0, clock_seq = "\000", node = "\000\000\000\000\000"}, if_version = 0
+ndr_syntax_id_to_string: char *(TALLOC_CTX *, const struct ndr_syntax_id *)
ndr_token_peek: uint32_t (struct ndr_token_list **, const void *)
ndr_token_retrieve: enum ndr_err_code (struct ndr_token_list **, const void *, uint32_t *)
ndr_token_retrieve_cmp_fn: enum ndr_err_code (struct ndr_token_list **, const void *, uint32_t *, comparison_fn_t, bool)
diff --git a/librpc/idl/witness.idl b/librpc/idl/witness.idl
new file mode 100644
index 0000000..cf60536
--- /dev/null
+++ b/librpc/idl/witness.idl
@@ -0,0 +1,110 @@
+#include "idl_types.h"
+
+import "misc.idl";
+
+[
+ uuid("ccd8c074-d0e5-4a40-92b4-d074faa6ba28"),
+ version(1.1),
+ pointer_default(unique),
+ helpstring("SMB Witness Service"),
+ endpoint("ncacn_ip_tcp:")
+]
+interface witness
+{
+ typedef [v1_enum] enum {
+ WITNESS_V1 = 0x00010001,
+ WITNESS_V2 = 0x00020000
+ } witness_version;
+
+ /*****************/
+ /* Function 0x00 */
+
+ typedef [enum16bit] enum {
+ WITNESS_STATE_UNKNOWN = 0x00,
+ WITNESS_STATE_AVAILABLE = 0x01,
+ WITNESS_STATE_UNAVAILABLE = 0xff
+ } witness_interfaceInfo_state;
+
+ typedef [bitmap32bit] bitmap {
+ WITNESS_INFO_IPv4_VALID = 0x01,
+ WITNESS_INFO_IPv6_VALID = 0x02,
+ WITNESS_INFO_WITNESS_IF = 0x04
+ } witness_interfaceInfo_flags;
+
+ typedef struct {
+ [charset(UTF16),to_null] uint16 group_name[260];
+ witness_version version;
+ witness_interfaceInfo_state state;
+ [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
+ [flag(NDR_BIG_ENDIAN)] ipv6address ipv6;
+ witness_interfaceInfo_flags flags;
+ } witness_interfaceInfo;
+
+ typedef struct {
+ uint32 num_interfaces;
+ [size_is(num_interfaces)] witness_interfaceInfo *interfaces;
+ } witness_interfaceList;
+
+ WERROR witness_GetInterfaceList(
+ [out] witness_interfaceList **interface_list
+ );
+
+ /*****************/
+ /* Function 0x01 */
+
+ WERROR witness_Register(
+ [out,ref] policy_handle *context_handle,
+ [in] witness_version version,
+ [in,unique,string,charset(UTF16)] uint16 *net_name,
+ [in,unique,string,charset(UTF16)] uint16 *ip_address,
+ [in,unique,string,charset(UTF16)] uint16 *client_computer_name
+ );
+
+ /*****************/
+ /* Function 0x02 */
+
+ WERROR witness_UnRegister(
+ [in] policy_handle context_handle
+ );
+
+ /*****************/
+ /* Function 0x03 */
+
+ typedef [v1_enum] enum {
+ WITNESS_NOTIFY_RESOURCE_CHANGE = 1,
+ WITNESS_NOTIFY_CLIENT_MOVE = 2,
+ WITNESS_NOTIFY_SHARE_MOVE = 3,
+ WITNESS_NOTIFY_IP_CHANGE = 4
+ } witness_notifyResponse_type;
+
+ typedef struct {
+ witness_notifyResponse_type message_type;
+ uint32 length;
+ uint32 num_messages;
+ [size_is(length)] uint8 *message_buffer;
+ } witness_notifyResponse;
+
+ WERROR witness_AsyncNotify(
+ [in] policy_handle context_handle,
+ [out] witness_notifyResponse **response
+ );
+
+ /*****************/
+ /* Function 0x04 */
+
+ typedef [bitmap32bit] bitmap {
+ WITNESS_REGISTER_NONE = 0x00,
+ WITNESS_REGISTER_IP_NOTIFICATION = 0x01
+ } witness_RegisterEx_flags;
+
+ WERROR witness_RegisterEx(
+ [out,ref] policy_handle *context_handle,
+ [in] witness_version version,
+ [in,unique,string,charset(UTF16)] uint16 *net_name,
+ [in,unique,string,charset(UTF16)] uint16 *share_name,
+ [in,unique,string,charset(UTF16)] uint16 *ip_address,
+ [in,unique,string,charset(UTF16)] uint16 *client_computer_name,
+ [in] witness_RegisterEx_flags flags,
+ [in] uint32 timeout
+ );
+}
diff --git a/librpc/idl/wscript_build b/librpc/idl/wscript_build
index 854a2e2..f181786 100644
--- a/librpc/idl/wscript_build
+++ b/librpc/idl/wscript_build
@@ -12,7 +12,7 @@ bld.SAMBA_PIDL_LIST('PIDL',
drsblobs.idl efs.idl frstrans.idl mgmt.idl netlogon.idl
notify.idl
policyagent.idl scerpc.idl svcctl.idl wkssvc.idl eventlog6.idl backupkey.idl
- fsrvp.idl''',
+ fsrvp.idl witness.idl''',
options='--header --ndr-parser --samba3-ndr-server --server --client --python',
output_dir='../gen_ndr')
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index 8070c3c..115e10a 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -124,6 +124,14 @@ struct ndr_print {
#define LIBNDR_STRING_FLAGS (0x7FFC)
/*
+ * don't debug NDR_ERR_BUFSIZE failures,
+ * as the available buffer might be incomplete.
+ *
+ * return NDR_ERR_INCOMPLETE_BUFFER instead.
+ */
+#define LIBNDR_FLAG_INCOMPLETE_BUFFER (1<<16)
+
+/*
* This lets ndr_pull_subcontext_end() return
* NDR_ERR_UNREAD_BYTES.
*/
@@ -206,7 +214,8 @@ enum ndr_err_code {
NDR_ERR_INVALID_POINTER,
NDR_ERR_UNREAD_BYTES,
NDR_ERR_NDR64,
- NDR_ERR_FLAGS
+ NDR_ERR_FLAGS,
+ NDR_ERR_INCOMPLETE_BUFFER
};
#define NDR_ERR_CODE_IS_SUCCESS(x) (x == NDR_ERR_SUCCESS)
@@ -265,6 +274,11 @@ enum ndr_compression_alg {
#define NDR_PULL_NEED_BYTES(ndr, n) do { \
if (unlikely((n) > ndr->data_size || ndr->offset + (n) > ndr->data_size)) { \
+ if (ndr->flags & LIBNDR_FLAG_INCOMPLETE_BUFFER) { \
+ uint32_t _available = ndr->data_size - ndr->offset; \
+ uint32_t _missing = n - _available; \
+ ndr->relative_highest_offset = _missing; \
+ } \
return ndr_pull_error(ndr, NDR_ERR_BUFSIZE, "Pull bytes %u (%s)", (unsigned)n, __location__); \
} \
} while(0)
@@ -281,6 +295,10 @@ enum ndr_compression_alg {
ndr->offset = (ndr->offset + (n-1)) & ~(n-1); \
} \
if (unlikely(ndr->offset > ndr->data_size)) { \
+ if (ndr->flags & LIBNDR_FLAG_INCOMPLETE_BUFFER) { \
+ uint32_t _missing = ndr->offset - ndr->data_size; \
+ ndr->relative_highest_offset = _missing; \
+ } \
return ndr_pull_error(ndr, NDR_ERR_BUFSIZE, "Pull align %u", (unsigned)n); \
} \
} while(0)
@@ -440,6 +458,8 @@ size_t ndr_size_dom_sid0(const struct dom_sid *sid, int flags);
void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid);
void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss);
bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1, const struct ndr_syntax_id *i2);
+char *ndr_syntax_id_to_string(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *id);
+bool ndr_syntax_id_from_string(const char *s, struct ndr_syntax_id *id);
enum ndr_err_code ndr_push_struct_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, const void *p, ndr_push_flags_fn_t fn);
enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p, uint32_t level, ndr_push_flags_fn_t fn);
size_t ndr_size_struct(const void *p, int flags, ndr_push_flags_fn_t push);
@@ -462,6 +482,8 @@ enum ndr_err_code ndr_pull_relative_ptr2(struct ndr_pull *ndr, const void *p);
enum ndr_err_code ndr_pull_relative_ptr_short(struct ndr_pull *ndr, uint16_t *v);
size_t ndr_align_size(uint32_t offset, size_t n);
struct ndr_pull *ndr_pull_init_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx);
+enum ndr_err_code ndr_pull_append(struct ndr_pull *ndr, DATA_BLOB *blob);
+enum ndr_err_code ndr_pull_pop(struct ndr_pull *ndr);
enum ndr_err_code ndr_pull_advance(struct ndr_pull *ndr, uint32_t size);
struct ndr_push *ndr_push_init_ctx(TALLOC_CTX *mem_ctx);
DATA_BLOB ndr_push_blob(struct ndr_push *ndr);
diff --git a/librpc/ndr/ndr.c b/librpc/ndr/ndr.c
index 3ed0310..76073ed 100644
--- a/librpc/ndr/ndr.c
+++ b/librpc/ndr/ndr.c
@@ -75,6 +75,111 @@ _PUBLIC_ struct ndr_pull *ndr_pull_init_blob(const DATA_BLOB *blob, TALLOC_CTX *
return ndr;
}
+_PUBLIC_ enum ndr_err_code ndr_pull_append(struct ndr_pull *ndr, DATA_BLOB *blob)
+{
+ enum ndr_err_code ndr_err;
+ DATA_BLOB b;
+ uint32_t append = 0;
+ bool ok;
+
+ if (blob->length == 0) {
+ return NDR_ERR_SUCCESS;
+ }
+
+ ndr_err = ndr_token_retrieve(&ndr->array_size_list, ndr, &append);
+ if (ndr_err == NDR_ERR_TOKEN) {
+ append = 0;
+ ndr_err = NDR_ERR_SUCCESS;
+ }
+ NDR_CHECK(ndr_err);
+
+ if (ndr->data_size == 0) {
+ ndr->data = NULL;
+ append = UINT32_MAX;
+ }
+
+ if (append == UINT32_MAX) {
+ /*
+ * append == UINT32_MAX means that
+ * ndr->data is either NULL or a valid
+ * talloc child of ndr, which means
+ * we can use data_blob_append() without
+ * data_blob_talloc() of the existing callers data
+ */
+ b = data_blob_const(ndr->data, ndr->data_size);
+ } else {
+ b = data_blob_talloc(ndr, ndr->data, ndr->data_size);
+ if (b.data == NULL) {
+ return ndr_pull_error(ndr, NDR_ERR_ALLOC, "%s", __location__);
+ }
+ }
+
+ ok = data_blob_append(ndr, &b, blob->data, blob->length);
+ if (!ok) {
+ return ndr_pull_error(ndr, NDR_ERR_ALLOC, "%s", __location__);
+ }
+
+ ndr->data = b.data;
+ ndr->data_size = b.length;
+
+ return ndr_token_store(ndr, &ndr->array_size_list, ndr, UINT32_MAX);
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_pop(struct ndr_pull *ndr)
+{
+ uint32_t skip = 0;
+ uint32_t append = 0;
+
+ if (ndr->relative_base_offset != 0) {
+ return ndr_pull_error(ndr, NDR_ERR_RELATIVE,
+ "%s", __location__);
+ }
+ if (ndr->relative_highest_offset != 0) {
+ return ndr_pull_error(ndr, NDR_ERR_RELATIVE,
+ "%s", __location__);
+ }
+ if (ndr->relative_list != NULL) {
+ return ndr_pull_error(ndr, NDR_ERR_RELATIVE,
+ "%s", __location__);
+ }
+ if (ndr->relative_base_list != NULL) {
+ return ndr_pull_error(ndr, NDR_ERR_RELATIVE,
+ "%s", __location__);
+ }
+
+ /*
+ * we need to keep up to 7 bytes
+ * in order to get the aligment right.
+ */
+ skip = ndr->offset & 0xFFFFFFF8;
+
+ if (skip == 0) {
+ return NDR_ERR_SUCCESS;
+ }
+
+ ndr->offset -= skip;
+ ndr->data_size -= skip;
+
+ append = ndr_token_peek(&ndr->array_size_list, ndr);
+ if (append != UINT32_MAX) {
+ /*
+ * here we assume, that ndr->data is not a
+ * talloc child of ndr.
+ */
+ ndr->data += skip;
+ return NDR_ERR_SUCCESS;
+ }
+
+ memmove(ndr->data, ndr->data + skip, ndr->data_size);
+
+ ndr->data = talloc_realloc(ndr, ndr->data, uint8_t, ndr->data_size);
+ if (ndr->data_size != 0 && ndr->data == NULL) {
+ return ndr_pull_error(ndr, NDR_ERR_ALLOC, "%s", __location__);
+ }
+
+ return NDR_ERR_SUCCESS;
+}
+
/*
advance by 'size' bytes
*/
@@ -453,6 +558,15 @@ _PUBLIC_ enum ndr_err_code ndr_pull_error(struct ndr_pull *ndr,
va_list ap;
int ret;
+ if (ndr->flags & LIBNDR_FLAG_INCOMPLETE_BUFFER) {
+ switch (ndr_err) {
+ case NDR_ERR_BUFSIZE:
+ return NDR_ERR_INCOMPLETE_BUFFER;
+ default:
+ break;
+ }
+ }
+
va_start(ap, format);
ret = vasprintf(&s, format, ap);
va_end(ap);
@@ -607,6 +721,23 @@ _PUBLIC_ enum ndr_err_code ndr_pull_subcontext_start(struct ndr_pull *ndr,
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &reserved));
break;
}
+ case 0xFFFFFFFF:
+ /*
+ * a shallow copy like subcontext
+ * useful for DCERPC pipe chunks.
+ */
+ subndr = talloc_zero(ndr, struct ndr_pull);
+ NDR_ERR_HAVE_NO_MEMORY(subndr);
+
+ subndr->flags = ndr->flags;
+ subndr->current_mem_ctx = ndr->current_mem_ctx;
+ subndr->data = ndr->data;
+ subndr->offset = ndr->offset;
+ subndr->data_size = ndr->data_size;
+
+ *_subndr = subndr;
+ return NDR_ERR_SUCCESS;
+
default:
return ndr_pull_error(ndr, NDR_ERR_SUBCONTEXT, "Bad subcontext (PULL) header_size %d",
(int)header_size);
@@ -641,7 +772,9 @@ _PUBLIC_ enum ndr_err_code ndr_pull_subcontext_end(struct ndr_pull *ndr,
uint32_t advance;
uint32_t highest_ofs;
- if (size_is >= 0) {
+ if (header_size == 0xFFFFFFFF) {
+ advance = subndr->offset - ndr->offset;
+ } else if (size_is >= 0) {
advance = size_is;
} else if (header_size > 0) {
advance = subndr->data_size;
@@ -1510,6 +1643,7 @@ const static struct {
{ NDR_ERR_INVALID_POINTER, "Invalid Pointer" },
{ NDR_ERR_UNREAD_BYTES, "Unread Bytes" },
{ NDR_ERR_NDR64, "NDR64 assertion error" },
+ { NDR_ERR_INCOMPLETE_BUFFER, "Incomplete Buffer" },
{ 0, NULL }
};
diff --git a/librpc/ndr/ndr_dcerpc.c b/librpc/ndr/ndr_dcerpc.c
index 3cbcef0..ca09fb6 100644
--- a/librpc/ndr/ndr_dcerpc.c
+++ b/librpc/ndr/ndr_dcerpc.c
@@ -21,10 +21,8 @@
*/
#include "includes.h"
-#include "bin/default/librpc/gen_ndr/ndr_dcerpc.h"
-
+#include "librpc/gen_ndr/ndr_dcerpc.h"
#include "librpc/gen_ndr/ndr_misc.h"
-#include "lib/util/bitmap.h"
const uint8_t DCERPC_SEC_VT_MAGIC[] = {0x8a,0xe3,0x13,0x71,0x02,0xf4,0x36,0x71};
diff --git a/librpc/ndr/ndr_misc.c b/librpc/ndr/ndr_misc.c
index c4a1adb..fa643c8 100644
--- a/librpc/ndr/ndr_misc.c
+++ b/librpc/ndr/ndr_misc.c
@@ -35,3 +35,50 @@ bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1,
return GUID_equal(&i1->uuid, &i2->uuid)
&& (i1->if_version == i2->if_version);
}
+
+_PUBLIC_ char *ndr_syntax_id_to_string(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *id)
+{
--
Samba Shared Repository
More information about the samba-cvs
mailing list