Re: [PATCH] crash: fix a segment fault

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Wengang,

Thanks for the patch.

-----Original Message-----
> There could be something wrong in the symbol name buffer for
> a kernel module. That could lead to reading from outside of
> "strbuf" in crash util code.

Do you mean that there is something wrong in the kernel and the patch
is a fail-safe for that?
If so, do you have any evidence or debugging information that can
determine whether the kernel causes the issue?

If there is likely to be a bug in the crash utility, I'd like to debug
the root cause more.

Thanks,
Kazu

> 
> Fix:
> Theck the index VS strbuf size and skip that symbol in case of
> out of band.
> 
> Signed-off-by: Wengang Wang <wen.gang.wang@xxxxxxxxxx>
> ---
>  symbols.c | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/symbols.c b/symbols.c
> index 5d7da6e..0b68ba9 100644
> --- a/symbols.c
> +++ b/symbols.c
> @@ -1965,12 +1965,20 @@ store_module_symbols_v2(ulong total, int mods_installed)
> 
>  			BZERO(buf1, BUFSIZE);
> 
> -			if (strbuf)
> -				strcpy(buf1,
> -					&strbuf[modsym_name(gpl_syms, modsym, i) - first]);
> -			else
> +			if (strbuf) {
> +				unsigned long addr = modsym_name(gpl_syms, modsym, i);
> +				unsigned long index = addr - first;
> +
> +				if (index < strbuflen)
> +					strncpy(buf1,
> +						&strbuf[index], BUFSIZE - 1);
> +				else
> +					fprintf(fp, "\nWarning: module \"%s\" has invalid address %lx for %dth
> symbol\n",
> +						lm->mod_name, addr, i);
> +			} else {
>  				read_string(modsym_name(gpl_syms, modsym, i), buf1,
>                              		BUFSIZE-1);
> +			}
> 
>                  	if (strlen(buf1)) {
>  				st->ext_module_symtable[mcnt].value =
> --
> 2.21.0 (Apple Git-122.2)
> 
> --
> Crash-utility mailing list
> Crash-utility@xxxxxxxxxx
> https://listman.redhat.com/mailman/listinfo/crash-utility


--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux