diff options
author | Filipe Laíns <lains@archlinux.org> | 2020-07-24 17:12:19 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2020-08-21 03:38:45 +0000 |
commit | e59b3c23381f8f79a3d950e8509b6f84b2956ce7 (patch) | |
tree | 2fdb166349a9a097358272e3979fd75bfa9b8275 /epan/tvbuff.c | |
parent | bd7d0742db79d5db84cdabe412484e65ed98c1d7 (diff) |
tvb: add tvb_get_bits_array
Change-Id: I2fad824ca417dcd089fabfdf06f28529c7ee9e87
Signed-off-by: Filipe Laíns <lains@archlinux.org>
Reviewed-on: https://code.wireshark.org/review/37949
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/tvbuff.c')
-rw-r--r-- | epan/tvbuff.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/epan/tvbuff.c b/epan/tvbuff.c index 9352a6f73e..41e3cd0cbf 100644 --- a/epan/tvbuff.c +++ b/epan/tvbuff.c @@ -1955,6 +1955,19 @@ static const guint8 bit_mask8[] = { 0xff }; + +/* Get a variable ammount of bits + * + * Return a byte array with bit limited data. The data is aligned to the right. + */ +guint8 * +tvb_get_bits_array(wmem_allocator_t *scope, tvbuff_t *tvb, const gint bit_offset, size_t no_of_bits, size_t *data_length) +{ + tvbuff_t *sub_tvb = tvb_new_octet_aligned(tvb, bit_offset, (gint32) no_of_bits); + *data_length = tvb_reported_length(sub_tvb); + return (guint8*)tvb_memdup(scope, sub_tvb, 0, *data_length); +} + /* Get 1 - 8 bits */ guint8 tvb_get_bits8(tvbuff_t *tvb, guint bit_offset, const gint no_of_bits) |