Message ID | 1382424205-19742-1-git-send-email-pl@kamp.de |
---|---|
State | New |
Headers | show |
On 10/22/2013 07:43 AM, Peter Lieven wrote: > this adds a check that a dynamic VHD file has not been > accidently truncated (e.g. during transfer or upload). > > Signed-off-by: Peter Lieven <pl@kamp.de> > --- > block/vpc.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/block/vpc.c b/block/vpc.c > index 1acc1d4..921364e 100644 > --- a/block/vpc.c > +++ b/block/vpc.c > @@ -269,6 +269,13 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags, > } > } > > + if (s->free_data_block_offset > bdrv_getlength(bs->file)) { > + ret = -EINVAL; > + fprintf(stderr, "block-vpc: free_data_block_offset points after" > + "the end of file. the image has been truncated.\n"); Why fprintf() instead of using the errp argument? Also, s/afterthe/after the/; s/file\. the/file. The/
On 22.10.2013 08:59, Eric Blake wrote: > On 10/22/2013 07:43 AM, Peter Lieven wrote: >> this adds a check that a dynamic VHD file has not been >> accidently truncated (e.g. during transfer or upload). >> >> Signed-off-by: Peter Lieven <pl@kamp.de> >> --- >> block/vpc.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/block/vpc.c b/block/vpc.c >> index 1acc1d4..921364e 100644 >> --- a/block/vpc.c >> +++ b/block/vpc.c >> @@ -269,6 +269,13 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags, >> } >> } >> >> + if (s->free_data_block_offset > bdrv_getlength(bs->file)) { >> + ret = -EINVAL; >> + fprintf(stderr, "block-vpc: free_data_block_offset points after" >> + "the end of file. the image has been truncated.\n"); > Why fprintf() instead of using the errp argument? wasn't aware. a few lines earlier fprintf(stderr, ...) was used. if the others are otherwise happy with the patch I will send a v2. Peter
diff --git a/block/vpc.c b/block/vpc.c index 1acc1d4..921364e 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -269,6 +269,13 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags, } } + if (s->free_data_block_offset > bdrv_getlength(bs->file)) { + ret = -EINVAL; + fprintf(stderr, "block-vpc: free_data_block_offset points after" + "the end of file. the image has been truncated.\n"); + goto fail; + } + s->last_bitmap_offset = (int64_t) -1; #ifdef CACHE
this adds a check that a dynamic VHD file has not been accidently truncated (e.g. during transfer or upload). Signed-off-by: Peter Lieven <pl@kamp.de> --- block/vpc.c | 7 +++++++ 1 file changed, 7 insertions(+)