summaryrefslogtreecommitdiff
path: root/source4/rpc_server
diff options
context:
space:
mode:
authorMatthieu Patou <mat@matws.net>2012-09-27 15:22:00 -0700
committerMatthieu Patou <mat@matws.net>2012-10-07 21:51:03 -0700
commitdc002a394b0e41254c061176f480b56a0ac4097d (patch)
tree402a8f4fc50a8cef63b4114419ef3e9eb58219ad /source4/rpc_server
parent8be6a106ab3a701e593b43e4d5b589b8a1e9013d (diff)
downloadsamba-dc002a394b0e41254c061176f480b56a0ac4097d.tar.gz
samba-dc002a394b0e41254c061176f480b56a0ac4097d.tar.bz2
samba-dc002a394b0e41254c061176f480b56a0ac4097d.zip
drsuapi: Validate the input parameters for the drsuapi_UpdateRefs function
Diffstat (limited to 'source4/rpc_server')
-rw-r--r--source4/rpc_server/drsuapi/updaterefs.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/source4/rpc_server/drsuapi/updaterefs.c b/source4/rpc_server/drsuapi/updaterefs.c
index e82ae48f3c..3cea1c47e3 100644
--- a/source4/rpc_server/drsuapi/updaterefs.c
+++ b/source4/rpc_server/drsuapi/updaterefs.c
@@ -137,6 +137,22 @@ WERROR drsuapi_UpdateRefs(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ct
req->options,
drs_ObjectIdentifier_to_string(mem_ctx, req->naming_context)));
+ /*
+ * 4.1.26.2 Server Behavior of the IDL_DRSUpdateRefs Method
+ * Implements the input validation checks
+ */
+ if (GUID_all_zero(&req->dest_dsa_guid)) {
+ return WERR_DS_DRA_INVALID_PARAMETER;
+ }
+
+ if (req->dest_dsa_dns_name == NULL) {
+ return WERR_DS_DRA_INVALID_PARAMETER;
+ }
+
+ if (!(req->options & (DRSUAPI_DRS_DEL_REF|DRSUAPI_DRS_ADD_REF))) {
+ return WERR_DS_DRA_INVALID_PARAMETER;
+ }
+
dn = drs_ObjectIdentifier_to_dn(mem_ctx, sam_ctx, req->naming_context);
W_ERROR_HAVE_NO_MEMORY(dn);
ret = dsdb_find_nc_root(sam_ctx, dn, dn, &nc_root);