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

From: Maxime Henrion <mux_at_FreeBSD.org>
Date: Sun, 6 Mar 2005 04:32:06 +0100
Sean McNeil wrote:
> 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
> > _at__at_ -64,7 +64,7 _at__at_
> >  #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 :)

I just committed this fix plus I changed the type of n while I was here
so that it is a size_t as it should.

Thanks,
Maxime
Received on Sun Mar 06 2005 - 02:32:06 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:29 UTC