]> Git Repo - qemu.git/commitdiff
vvfat: fix out of bounds array_get usage
authorPaolo Bonzini <[email protected]>
Wed, 5 Oct 2011 07:12:03 +0000 (09:12 +0200)
committerKevin Wolf <[email protected]>
Fri, 4 Nov 2011 14:42:44 +0000 (15:42 +0100)
When reading the address of the first free entry, you cannot
use array_get without first marking all entries as occupied.

This is visible if you change the sectors per cluster on a
floppy from 2 to 1.

Signed-off-by: Paolo Bonzini <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
block/vvfat.c

index e1fcdbc45bfd2926a2beefafdf9008d03a044979..75d0dc07e0d1bc120e72108854b60133de1c7da8 100644 (file)
@@ -799,6 +799,7 @@ static int read_directory(BDRVVVFATState* s, int mapping_index)
        /* root directory */
        int cur = s->directory.next;
        array_ensure_allocated(&(s->directory), ROOT_ENTRIES - 1);
+       s->directory.next = ROOT_ENTRIES;
        memset(array_get(&(s->directory), cur), 0,
                (ROOT_ENTRIES - cur) * sizeof(direntry_t));
     }
This page took 0.028767 seconds and 4 git commands to generate.