[Crash-utility] [PATCH V2] netdump: fix regression for tiny kdump files

qianli zhao zhaoqianligood at gmail.com
Thu Dec 17 07:27:30 UTC 2020


Dear maintainers

Are there any comments for this patch set?

It's a regression issue,without the patch in some tiny kdump files
cannot be parsed.

Mathias Krause <minipli at grsecurity.net> 于2020年12月1日周二 下午4:35写道:
>
> Am 01.12.20 um 03:56 schrieb Qianli Zhao:
> > From: Qianli Zhao <zhaoqianli at xiaomi.com>
> >
> > Commit f42db6a33f0e ("Support core files with "unusual" layout")
> > increased the minimal file size from MIN_NETDUMP_ELF_HEADER_SIZE to
> > SAFE_NETDUMP_ELF_HEADER_SIZE which lead to crash rejecting very
> > small kdump files.
> >
> > Fix that by erroring out only if we get less than
> > MIN_NETDUMP_ELF_HEADER_SIZE bytes.
> >
> > Signed-off-by: Qianli Zhao <zhaoqianli at xiaomi.com>
> > ---
> > - Update commit message
> > - Add more accurate judgment of read() return value
> > ---
> >  netdump.c | 9 +++++++--
> >  1 file changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/netdump.c b/netdump.c
> > index c76d9dd..9a36931 100644
> > --- a/netdump.c
> > +++ b/netdump.c
> > @@ -119,7 +119,8 @@ is_netdump(char *file, ulong source_query)
> >       Elf64_Phdr *load64;
> >       char *eheader, *sect0;
> >       char buf[BUFSIZE];
> > -     size_t size, len, tot;
> > +     ssize_t size;
> > +     size_t len, tot;
> >          Elf32_Off offset32;
> >          Elf64_Off offset64;
> >       ulong format;
> > @@ -142,10 +143,14 @@ is_netdump(char *file, ulong source_query)
> >               if (!read_flattened_format(fd, 0, eheader, size))
> >                       goto bailout;
> >       } else {
> > -             if (read(fd, eheader, size) != size) {
> > +             size = read(fd, eheader, size);
> > +             if (size < 0) {
> >                       sprintf(buf, "%s: ELF header read", file);
> >                       perror(buf);
> >                       goto bailout;
> > +             } else if (size < MIN_NETDUMP_ELF_HEADER_SIZE) {
> > +                     fprintf(stderr, "%s: file too small!\n", file);
> > +                     goto bailout;
> >               }
> >       }
> >
> >
>
> Looks good to me, thanks!
>
> Acked-and-tested-by: Mathias Krause <minipli at grsecurity.net>





More information about the Crash-utility mailing list