/usr/src/lib/libc/string/strsignal.c:96

Sean McNeil sean at mcneil.com
Sat Mar 5 18:43:57 PST 2005


On Sun, 2005-03-06 at 01:27 +0100, Maxime Henrion wrote:
> Sean McNeil wrote:
> > Hi folks,
> > 
> > It looks like strsignal is busted.  All I have to do is hit ctrl-c while
> > running gmake and I get this core:
> > 
> > #0  strsignal (num=2) at /usr/src/lib/libc/string/strsignal.c:96
> >         ebuf = "Interrupt", '\0' <repeats 2038 times>
> >         tmp = "2\000\000\000\000\000\000\000\002\000\000\000\000\000\000
> > \000\000\000\000"
> >         signum = 0
> >         n = 4326031
> >         t = 0x7fffffffd151 ""
> >         p = 0x800d5b82f <Address 0x800d5b82f out of bounds>
> > 
> > This is because n is uninitialized when num > 0 && num < sys_nsig.
> 
> Indeed.  Can you confirm that this patch fixes the problem?
> 
> %%
> --- strsignal.c.orig	Tue Mar  1 20:28:14 2005
> +++ strsignal.c	Sun Mar  6 01:24:18 2005
> @@ -64,7 +64,7 @@
>  #endif
>  
>  	if (num > 0 && num < sys_nsig) {
> -		strlcpy(ebuf,
> +		n = strlcpy(ebuf,
>  #if defined(NLS)
>  			catgets(catd, 2, num, sys_siglist[num]),
>  #else
> %%

Yes, this has the desired affect and no more core dump :)

Thanks,
Sean




More information about the freebsd-current mailing list