summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/drsuapi.idl4
-rw-r--r--source4/librpc/ndr/ndr_basic.c1
2 files changed, 3 insertions, 2 deletions
diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl
index 4b78d848ed..758e5f80fe 100644
--- a/source4/librpc/idl/drsuapi.idl
+++ b/source4/librpc/idl/drsuapi.idl
@@ -436,7 +436,7 @@ interface drsuapi
/* Generic DATA_BLOB values */
typedef struct {
- [range(0,10485760)] uint32 length;
+ [range(0,10485760),value(ndr_size_DATA_BLOB(0,r->data,0))] uint32 length;
DATA_BLOB *data;
} drsuapi_DsAttributeValueDataBlob;
@@ -600,7 +600,7 @@ interface drsuapi
[default] drsuapi_DsAttributeValueCtrDataBlob data_blob;
} drsuapi_DsReplicaAttributeValueCtr;
- typedef struct {
+ typedef [public] struct {
drsuapi_DsAttributeId attid;
[switch_is(attid)] drsuapi_DsReplicaAttributeValueCtr value_ctr;
} drsuapi_DsReplicaAttribute;
diff --git a/source4/librpc/ndr/ndr_basic.c b/source4/librpc/ndr/ndr_basic.c
index a9cfb558f7..04589d3e96 100644
--- a/source4/librpc/ndr/ndr_basic.c
+++ b/source4/librpc/ndr/ndr_basic.c
@@ -846,5 +846,6 @@ _PUBLIC_ NTSTATUS ndr_pull_DATA_BLOB(struct ndr_pull *ndr, int ndr_flags, DATA_B
_PUBLIC_ uint32_t ndr_size_DATA_BLOB(int ret, const DATA_BLOB *data, int flags)
{
+ if (!data) return ret;
return ret + data->length;
}