}
if (tag_impl) {
- next_tvb = tvb_new_subset(tvb, offset, tvb_length_remaining(tvb, offset), tmp_len);
+ gint length_remaining;
+
+ length_remaining = tvb_length_remaining(tvb, offset);
+ if (tmp_len > (guint32)length_remaining)
+ tmp_len = length_remaining;
+ next_tvb = tvb_new_subset(tvb, offset, tmp_len, tmp_len);
type(tag_impl, next_tvb, 0, actx, tree, hf_id);
offset += tmp_len;
} else {
}
if (out_tvb) {
- *out_tvb = tvb_new_subset(tvb, offset, length_remaining, len);
+ if (len > (guint32)length_remaining)
+ len = length_remaining;
+ *out_tvb = tvb_new_subset(tvb, offset, len, len);
}
}
return end_offset;
length_remaining = tvb_length_remaining(tvb, hoffset);
if (length_remaining > (eoffset - hoffset - (2 * ind_field)))
length_remaining = eoffset - hoffset - (2 * ind_field);
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset - hoffset - (2 * ind_field));
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, length_remaining);
}
} else {
length_remaining = tvb_length_remaining(tvb, hoffset);
if (length_remaining > (eoffset - hoffset))
length_remaining = eoffset - hoffset;
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset - hoffset);
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, length_remaining);
}
#if 0
else
next_tvb = tvb; /* we didn't make selection on this class/tag so pass it on */
#endif
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, length);
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, length_remaining);
#ifdef DEBUG_BER_CHOICE
length_remaining = tvb_length_remaining(tvb, hoffset);
if (length_remaining>eoffset-hoffset)
length_remaining = eoffset-hoffset;
- next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, eoffset-hoffset);
+ next_tvb = tvb_new_subset(tvb, hoffset, length_remaining, length_remaining);
imp_tag = FALSE;
if (seq->flags == BER_FLAGS_IMPLTAG)