Message ID | 086f8b2c736cb88cf217fe10ab558eec92fc000d.1264017981.git.quintela@redhat.com |
---|---|
State | New |
Headers | show |
On Wed, Jan 20, 2010 at 09:14:03PM +0100, Juan Quintela wrote: > From: Kirill A. Shutemov <kirill@shutemov.name> > > CC block/vvfat.o > cc1: warnings being treated as errors > block/vvfat.c: In function 'commit_one_file': > block/vvfat.c:2259: error: ignoring return value of 'ftruncate', declared with attribute warn_unused_result > make: *** [block/vvfat.o] Error 1 > CC block/vvfat.o > In file included from /usr/include/stdio.h:912, > from ./qemu-common.h:19, > from block/vvfat.c:27: > In function 'snprintf', > inlined from 'init_directories' at block/vvfat.c:871, > inlined from 'vvfat_open' at block/vvfat.c:1068: > /usr/include/bits/stdio2.h:65: error: call to __builtin___snprintf_chk will always overflow destination buffer > make: *** [block/vvfat.o] Error 1 > > Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> > Signed-off-by: Juan Quintela <quintela@redhat.com> > --- > block/vvfat.c | 9 +++++++-- > 1 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/block/vvfat.c b/block/vvfat.c > index 063f731..df957e5 100644 > --- a/block/vvfat.c > +++ b/block/vvfat.c > @@ -868,7 +868,8 @@ static int init_directories(BDRVVVFATState* s, > { > direntry_t* entry=array_get_next(&(s->directory)); > entry->attributes=0x28; /* archive | volume label */ > - snprintf((char*)entry->name,11,"QEMU VVFAT"); > + memcpy(entry->name,"QEMU VVF",8); > + memcpy(entry->extension,"AT ",3); > } > Before the change extension was initialized to "AT\0" after it is "AT " > /* Now build FAT, and write back information into directory */ > @@ -2256,7 +2257,11 @@ static int commit_one_file(BDRVVVFATState* s, > c = c1; > } > > - ftruncate(fd, size); > + if (ftruncate(fd, size)) { > + perror("ftruncate()"); > + close(fd); > + return -4; > + } > close(fd); > > return commit_mappings(s, first_cluster, dir_index); > -- > 1.6.6 > > -- Gleb.
Gleb Natapov <gleb@redhat.com> wrote: > On Wed, Jan 20, 2010 at 09:14:03PM +0100, Juan Quintela wrote: >> From: Kirill A. Shutemov <kirill@shutemov.name> >> >> CC block/vvfat.o >> cc1: warnings being treated as errors >> block/vvfat.c: In function 'commit_one_file': >> block/vvfat.c:2259: error: ignoring return value of 'ftruncate', declared with attribute warn_unused_result >> make: *** [block/vvfat.o] Error 1 >> CC block/vvfat.o >> In file included from /usr/include/stdio.h:912, >> from ./qemu-common.h:19, >> from block/vvfat.c:27: >> In function 'snprintf', >> inlined from 'init_directories' at block/vvfat.c:871, >> inlined from 'vvfat_open' at block/vvfat.c:1068: >> /usr/include/bits/stdio2.h:65: error: call to __builtin___snprintf_chk will always overflow destination buffer >> make: *** [block/vvfat.o] Error 1 >> >> Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> >> Signed-off-by: Juan Quintela <quintela@redhat.com> >> --- >> block/vvfat.c | 9 +++++++-- >> 1 files changed, 7 insertions(+), 2 deletions(-) >> >> diff --git a/block/vvfat.c b/block/vvfat.c >> index 063f731..df957e5 100644 >> --- a/block/vvfat.c >> +++ b/block/vvfat.c >> @@ -868,7 +868,8 @@ static int init_directories(BDRVVVFATState* s, >> { >> direntry_t* entry=array_get_next(&(s->directory)); >> entry->attributes=0x28; /* archive | volume label */ >> - snprintf((char*)entry->name,11,"QEMU VVFAT"); >> + memcpy(entry->name,"QEMU VVF",8); >> + memcpy(entry->extension,"AT ",3); >> } >> > Before the change extension was initialized to "AT\0" after it is "AT " it was paolo who told to do that change. entries are not 0 ended. that was his explanation. Later, Juan.
On Thu, Jan 21, 2010 at 09:17:27AM +0100, Juan Quintela wrote: > Gleb Natapov <gleb@redhat.com> wrote: > > On Wed, Jan 20, 2010 at 09:14:03PM +0100, Juan Quintela wrote: > >> From: Kirill A. Shutemov <kirill@shutemov.name> > >> > >> CC block/vvfat.o > >> cc1: warnings being treated as errors > >> block/vvfat.c: In function 'commit_one_file': > >> block/vvfat.c:2259: error: ignoring return value of 'ftruncate', declared with attribute warn_unused_result > >> make: *** [block/vvfat.o] Error 1 > >> CC block/vvfat.o > >> In file included from /usr/include/stdio.h:912, > >> from ./qemu-common.h:19, > >> from block/vvfat.c:27: > >> In function 'snprintf', > >> inlined from 'init_directories' at block/vvfat.c:871, > >> inlined from 'vvfat_open' at block/vvfat.c:1068: > >> /usr/include/bits/stdio2.h:65: error: call to __builtin___snprintf_chk will always overflow destination buffer > >> make: *** [block/vvfat.o] Error 1 > >> > >> Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> > >> Signed-off-by: Juan Quintela <quintela@redhat.com> > >> --- > >> block/vvfat.c | 9 +++++++-- > >> 1 files changed, 7 insertions(+), 2 deletions(-) > >> > >> diff --git a/block/vvfat.c b/block/vvfat.c > >> index 063f731..df957e5 100644 > >> --- a/block/vvfat.c > >> +++ b/block/vvfat.c > >> @@ -868,7 +868,8 @@ static int init_directories(BDRVVVFATState* s, > >> { > >> direntry_t* entry=array_get_next(&(s->directory)); > >> entry->attributes=0x28; /* archive | volume label */ > >> - snprintf((char*)entry->name,11,"QEMU VVFAT"); > >> + memcpy(entry->name,"QEMU VVF",8); > >> + memcpy(entry->extension,"AT ",3); > >> } > >> > > Before the change extension was initialized to "AT\0" after it is "AT " > > it was paolo who told to do that change. entries are not 0 ended. > > that was his explanation. > OK. Just wanted to make sure this is intentional. -- Gleb.
Juan Quintela <quintela@redhat.com> writes: > Gleb Natapov <gleb@redhat.com> wrote: >> On Wed, Jan 20, 2010 at 09:14:03PM +0100, Juan Quintela wrote: [...] >>> diff --git a/block/vvfat.c b/block/vvfat.c >>> index 063f731..df957e5 100644 >>> --- a/block/vvfat.c >>> +++ b/block/vvfat.c >>> @@ -868,7 +868,8 @@ static int init_directories(BDRVVVFATState* s, >>> { >>> direntry_t* entry=array_get_next(&(s->directory)); >>> entry->attributes=0x28; /* archive | volume label */ >>> - snprintf((char*)entry->name,11,"QEMU VVFAT"); >>> + memcpy(entry->name,"QEMU VVF",8); >>> + memcpy(entry->extension,"AT ",3); >>> } >>> >> Before the change extension was initialized to "AT\0" after it is "AT " > > it was paolo who told to do that change. entries are not 0 ended. > > that was his explanation. Please mention this in the commit message.
diff --git a/block/vvfat.c b/block/vvfat.c index 063f731..df957e5 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -868,7 +868,8 @@ static int init_directories(BDRVVVFATState* s, { direntry_t* entry=array_get_next(&(s->directory)); entry->attributes=0x28; /* archive | volume label */ - snprintf((char*)entry->name,11,"QEMU VVFAT"); + memcpy(entry->name,"QEMU VVF",8); + memcpy(entry->extension,"AT ",3); } /* Now build FAT, and write back information into directory */ @@ -2256,7 +2257,11 @@ static int commit_one_file(BDRVVVFATState* s, c = c1; } - ftruncate(fd, size); + if (ftruncate(fd, size)) { + perror("ftruncate()"); + close(fd); + return -4; + } close(fd); return commit_mappings(s, first_cluster, dir_index);