[Libguestfs] [PATCH v2 1/2] lib: change how hbin sections are read.
Dawid Zamirski
dzamirski at datto.com
Wed Feb 15 22:22:52 UTC 2017
On Wed, 2017-02-15 at 16:50 -0500, Dawid Zamirski wrote:
> On Wed, 2017-02-15 at 21:14 +0000, Richard W.M. Jones wrote:
> > On Wed, Feb 15, 2017 at 02:28:41PM -0500, Dawid Zamirski wrote:
> > > Correct, however there's also no guarantee that seeking by 4k in
> > > "garbage" data would not land you in registry data that happens
> > > to
> > > evaluate to "hbin" as well. That's why I put "hbin" offset
> > > validation
> > > check couple of lines below to make sure that the "hbin" we found
> > > by
> > > searching is a proper one. The offset check I'm referring to is:
> > >
> > > /* get "stated" hbin offset from header */
> > > size_t page_offset = le32to(page->offset_first) + 0x1000;
> > >
> > > /* if that does not match our current file offset,
> > > then exit with error */
> > > if (page_offset != off) {
> > > SET_ERRNO...
> > > }
> >
> > Still, what kind of corruption would move a genuine hbin to a
> > non-page-sized offset in the file? It seems unlikely to me ...
> >
> > Rich.
> >
>
> None that I know of :-) However I don't see any other simple way to
> silence that GCC7 warning and it seems harmless that way to me
> (besides
> the fact that the loop will have to make more iterations)
So I've found a way to keep offsetting by 4k and keep GCC7 happy:
while (off < h->endpages) {
if (off + 0x1000 > off)
off += 0x1000;
else
break; // off would overflow
Is this acceptable?
Regards,
Dawid
More information about the Libguestfs
mailing list