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

HAGIO KAZUHITO(萩尾 一仁) k-hagio-ab at nec.com
Mon Dec 21 05:32:44 UTC 2020


Hi Qianli,

-----Original Message-----
> 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.

I've not touched a RAM dumpfile, but apparently crash generates a small
temporary ELF header file from the dumpfile if without -o option and
passes it to is_kdump(), then fails.  So I'll replace the above with
"... which can lead to crash rejecting raw RAM dumpfiles" according to
the wording of the crash man page.

Anyway, thank you for catching this.  Please wait for another ack.

Acked-by: Kazuhito Hagio <k-hagio-ab at nec.com>

Thanks,
Kazu


> 
> 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;
>  		}
>  	}
> 
> --
> 2.7.4
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility





More information about the Crash-utility mailing list