]> sourceware.org Git - lvm2.git/commit
libdm: fix segfault with invalid group descriptor
authorBryn M. Reeves <bmr@redhat.com>
Tue, 13 Dec 2016 13:56:10 +0000 (13:56 +0000)
committerBryn M. Reeves <bmr@redhat.com>
Tue, 13 Dec 2016 14:37:41 +0000 (14:37 +0000)
commit99b6d82e2dac7ef097fa940c64456620930d7758
treef2689777654848999ff5dd877a9d2a7cd9a09772
parent138e4336fd8422623df7daa362b98a4899f5fbec
libdm: fix segfault with invalid group descriptor

If a region has a a DMS_GROUP tag in aux_data where the first
region_id in the bitmap is not the same as the containing region,
dmstats will segfault:

  # '2' is never a valid group bitset list for region_id == 0
  # dmsetup message vg_hex/root 0 "@stats_set_aux 0 DMS_GROUP=img:2#"

  # dmsetup message vg_hex/root 0 "@stats_list"
  0: 45383680+16384 16384 dmstats DMS_GROUP=img:2#
  1: 46071808+32768 32768 dmstats -
  2: 47382528+16384 16384 dmstats -

  # dmstats list
  Segmentation fault (core dumped)

The crash will occur in some arbitrary dm_stats_get_* property
method - this happens while processing the 1st region_id in the
bitset, because the region is marked as grouped, but there is
no group bitmap present at dms->groups[2]->regions.

Fix this by detecting a mismatch between the expected region_id
and dm_bit_get_first() for the parsed bitset during
_parse_aux_data_group().
libdm/libdm-stats.c
This page took 0.043481 seconds and 5 git commands to generate.