wrong IDL for DsBind in drsuapi.idl

Stefan (metze) Metzmacher metze at samba.org
Mon Oct 21 00:31:35 MDT 2013


Hi Matthieu,

> -	typedef struct {
> -		[flag(NDR_REMAINING)] DATA_BLOB info;
> -	} drsuapi_DsBindInfoFallBack;
> -
>  	typedef [nodiscriminant] union {
> -		[case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24;
> -		[case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28;
> -		[case(48)][subcontext(4)] drsuapi_DsBindInfo48 info48;
> -		[default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack;
> +		[case(24)][subcontext(0), subcontext_size(24)] drsuapi_DsBindInfo24 info24;
> +		[case(28)][subcontext(0), subcontext_size(28)] drsuapi_DsBindInfo28 info28;
> +		[case(48)][subcontext(0), subcontext_size(48)] drsuapi_DsBindInfo48 info48;
>  	} drsuapi_DsBindInfo;
>
> +	typedef [flag(NDR_NOALIGN)] struct {
> +		[range(1,10000)] uint3264 length;
> +		[value(length)] uint32 __ndr_length;
> +		[switch_is(length)] drsuapi_DsBindInfo info;
> +	} drsuapi_DsBindInfoCtr;

I think we need to keep drsuapi_DsBindInfoFallBack, otherwise we maybe
unable to parse
unknown requests. I think it would be better to use uint3264 length in
drsuapi_DsBindInfoCtr
and add nopull,nopush to drsuapi_DsBindInfo and fix up the code there.

metze


More information about the samba-technical mailing list