diff options
author | Matthieu Patou <mat@matws.net> | 2012-09-27 15:22:00 -0700 |
---|---|---|
committer | Matthieu Patou <mat@matws.net> | 2012-10-07 21:51:03 -0700 |
commit | dc002a394b0e41254c061176f480b56a0ac4097d (patch) | |
tree | 402a8f4fc50a8cef63b4114419ef3e9eb58219ad | |
parent | 8be6a106ab3a701e593b43e4d5b589b8a1e9013d (diff) | |
download | samba-dc002a394b0e41254c061176f480b56a0ac4097d.tar.gz samba-dc002a394b0e41254c061176f480b56a0ac4097d.tar.bz2 samba-dc002a394b0e41254c061176f480b56a0ac4097d.zip |
drsuapi: Validate the input parameters for the drsuapi_UpdateRefs function
-rw-r--r-- | source4/rpc_server/drsuapi/updaterefs.c | 16 |
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); |