/*
  IDL typedef struct {
  IDL   long element_82;
  IDL   [size_is(element_82)] [unique] byte *element_83;
  IDL } TYPE_12;
*/
static int
dissect_browser_TYPE_12_data(tvbuff_t *tvb, int offset,
			packet_info *pinfo, proto_tree *tree,
			guint8 *drep)
{
	guint32 len;
	dcerpc_info *di;
	int old_offset = offset;

	di=pinfo->private_data;
	if(di->conformant_run){
		/* this call is to make wireshark eat the array header for the conformant run */
		offset =dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep, NULL);

		return offset;
	}

	/* this is really the length of the encoded data */
	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
		hf_browser_unknown_long, &len);

	proto_tree_add_item(tree, hf_browser_unknown_bytes, tvb, offset, len,
		FALSE);
	offset += len;
	if (offset < old_offset)
		THROW(ReportedBoundsError);

	return offset;
}
Ejemplo n.º 2
0
/*
  IDL typedef struct {
  IDL   long element_7;
  IDL   [size_is(element_7)] [unique] byte *element_8;
  IDL } TYPE_4;
*/
static int
dissect_browser_TYPE_4_data(tvbuff_t *tvb, int offset,
                            packet_info *pinfo, proto_tree *tree,
                            dcerpc_info *di, guint8 *drep)
{
    guint32 len;
    int old_offset = offset;

    if(di->conformant_run) {
        /* this call is to make wireshark eat the array header for the conformant run */
        offset =dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, NULL);

        return offset;
    }
    offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
                                hf_browser_unknown_long, &len);

    proto_tree_add_item(tree, hf_browser_unknown_bytes, tvb, offset, len,
                        ENC_NA);
    offset += len;
    if (offset < old_offset)
        THROW(ReportedBoundsError);

    return len;
}
/*
  IDL typedef struct {
  IDL   long element_57;
  IDL   [size_is(element_57)] [unique] TYPE_11 *element_58;
  IDL } TYPE_10;
*/
static int
dissect_browser_TYPE_11_array(tvbuff_t *tvb, int offset,
			packet_info *pinfo, proto_tree *tree,
			guint8 *drep)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
		dissect_browser_TYPE_11);

	return offset;
}