diff options
-rw-r--r-- | source4/librpc/idl/drsuapi.idl | 4 | ||||
-rw-r--r-- | source4/librpc/ndr/ndr_basic.c | 1 |
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; } |