On Wed, Feb 06, 2013 at 01:31:48PM +0100, Benoît Canet wrote:
> @@ -148,6 +158,19 @@ static int qcow2_read_extensions(BlockDriverState *bs, 
> uint64_t start_offset,
>              }
>              break;
>  
> +        case QCOW2_EXT_MAGIC_DEDUP_TABLE:
> +                ret = bdrv_pread(bs->file, offset,
> +                                 &dedup_table_extension, ext.len);

Buffer overflow if ext.len > sizeof(dedup_table_extension).  Please
check ext.len before using it.

> +                if (ret < 0) {
> +                    return ret;
> +                }
> +                s->dedup_table_offset =
> +                    be64_to_cpu(dedup_table_extension.offset);
> +                s->dedup_table_size =
> +                    be32_to_cpu(dedup_table_extension.size);
> +                s->dedup_hash_algo = dedup_table_extension.hash_algo;

Input validation for these fields (especially table size)?

Reply via email to