Skip to content
Snippets Groups Projects
  • Christian Borntraeger's avatar
    cd466702
    vmdk: fix maybe uninitialized warnings · cd466702
    Christian Borntraeger authored
    
    Fedora 32 gcc 10 seems to give false positives:
    
    Compiling C object libblock.fa.p/block_vmdk.c.o
    ../block/vmdk.c: In function ‘vmdk_parse_extents’:
    ../block/vmdk.c:587:5: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      587 |     g_free(extent->l1_table);
          |     ^~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:754:17: note: ‘extent’ was declared here
      754 |     VmdkExtent *extent;
          |                 ^~~~~~
    ../block/vmdk.c:620:11: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      620 |     ret = vmdk_init_tables(bs, extent, errp);
          |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:598:17: note: ‘extent’ was declared here
      598 |     VmdkExtent *extent;
          |                 ^~~~~~
    ../block/vmdk.c:1178:39: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     1178 |             extent->flat_start_offset = flat_offset << 9;
          |             ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
    ../block/vmdk.c: In function ‘vmdk_open_vmdk4’:
    ../block/vmdk.c:581:22: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      581 |     extent->l2_cache =
          |     ~~~~~~~~~~~~~~~~~^
      582 |         g_malloc(extent->entry_size * extent->l2_size * L2_CACHE_SIZE);
          |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:872:17: note: ‘extent’ was declared here
      872 |     VmdkExtent *extent;
          |                 ^~~~~~
    ../block/vmdk.c: In function ‘vmdk_open’:
    ../block/vmdk.c:620:11: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      620 |     ret = vmdk_init_tables(bs, extent, errp);
          |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:598:17: note: ‘extent’ was declared here
      598 |     VmdkExtent *extent;
          |                 ^~~~~~
    cc1: all warnings being treated as errors
    make: *** [Makefile.ninja:884: libblock.fa.p/block_vmdk.c.o] Error 1
    
    fix them by assigning a default value.
    
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: default avatarFam Zheng <fam@euphon.net>
    Message-Id: <20200930155859.303148-2-borntraeger@de.ibm.com>
    Signed-off-by: default avatarLaurent Vivier <laurent@vivier.eu>
    cd466702
    History
    vmdk: fix maybe uninitialized warnings
    Christian Borntraeger authored
    
    Fedora 32 gcc 10 seems to give false positives:
    
    Compiling C object libblock.fa.p/block_vmdk.c.o
    ../block/vmdk.c: In function ‘vmdk_parse_extents’:
    ../block/vmdk.c:587:5: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      587 |     g_free(extent->l1_table);
          |     ^~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:754:17: note: ‘extent’ was declared here
      754 |     VmdkExtent *extent;
          |                 ^~~~~~
    ../block/vmdk.c:620:11: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      620 |     ret = vmdk_init_tables(bs, extent, errp);
          |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:598:17: note: ‘extent’ was declared here
      598 |     VmdkExtent *extent;
          |                 ^~~~~~
    ../block/vmdk.c:1178:39: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
     1178 |             extent->flat_start_offset = flat_offset << 9;
          |             ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
    ../block/vmdk.c: In function ‘vmdk_open_vmdk4’:
    ../block/vmdk.c:581:22: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      581 |     extent->l2_cache =
          |     ~~~~~~~~~~~~~~~~~^
      582 |         g_malloc(extent->entry_size * extent->l2_size * L2_CACHE_SIZE);
          |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:872:17: note: ‘extent’ was declared here
      872 |     VmdkExtent *extent;
          |                 ^~~~~~
    ../block/vmdk.c: In function ‘vmdk_open’:
    ../block/vmdk.c:620:11: error: ‘extent’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
      620 |     ret = vmdk_init_tables(bs, extent, errp);
          |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../block/vmdk.c:598:17: note: ‘extent’ was declared here
      598 |     VmdkExtent *extent;
          |                 ^~~~~~
    cc1: all warnings being treated as errors
    make: *** [Makefile.ninja:884: libblock.fa.p/block_vmdk.c.o] Error 1
    
    fix them by assigning a default value.
    
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: default avatarFam Zheng <fam@euphon.net>
    Message-Id: <20200930155859.303148-2-borntraeger@de.ibm.com>
    Signed-off-by: default avatarLaurent Vivier <laurent@vivier.eu>