On Wed, 01 Oct 2008, Philipp Kern wrote: > am Wed, Oct 01, 2008 at 12:41:00PM +0200 hast du folgendes geschrieben: > > irqbalance in etch segfaults when /proc/interrupts contains an interrupt > > with a number higher than or equal to MAX_INTERRUPTS (256) due to a > > missing array boundary check. At least it segfaults reliably on all my > > hosts (say powell.d.o) that have a line starting in the 500s range. > > > > The version from lenny/backports does not have this issue. Should we > > try to fix this in the etch package also? > > looks RC to me. If it's just a missing boundary check, please add it > and post the debdiff. (:
source interdiff looks like this: diff -u irqbalance-0.12/debian/changelog irqbalance-0.12/debian/changelog --- irqbalance-0.12/debian/changelog +++ irqbalance-0.12/debian/changelog @@ -1,3 +1,15 @@ +irqbalance (0.12-7etch1) stable; urgency=low + + * Non maintainer upload. + * irqbalance would segfault on startup when /proc/interrupts contains + an interrupt with a number of 256 or larger, since internally it + stored data in a fixed-length array. Newer versions (say 0.55) have + replaced the data structure with a list so this is fixed there. For + now we just skip interrupts with such high numbers, since it's the + least invasive approach during the stable cycle. + + -- Peter Palfrader <[EMAIL PROTECTED]> Wed, 1 Oct 2008 15:06:07 +0200 + irqbalance (0.12-7) unstable; urgency=low * debian/po/es.po: Add Spanish translation from César Gómez only in patch2: unchanged: --- irqbalance-0.12.orig/procinterrupts.c +++ irqbalance-0.12/procinterrupts.c @@ -103,6 +103,13 @@ ret = sscanf(word,"%i",&irqnumber); if (!ret) /* non numeric end stuff */ irqnumber = MAX_INTERRUPTS-1; + /* This version of irqbalance cannot handle interrups larger + * than 255, so skip stuff right here. Newer versions + * have replaced the length limited array with a list, + * so this limitation is no longer present in say 0.55. + */ + if (irqnumber < 0 || irqnumber >= MAX_INTERRUPTS) + break; /* then N columns of counts, where N is the number of cpu's */ } else if (column <= cpucount) { sscanf(word,"%lli",&count); Of course this isn't ideal, since now "high-number" interrupts are just ignored, and not handled at all. But it's better than segfaulting. I would still like to hear back from the old maintainer, Eric, or the new maintainer, Kyle, tho. -- | .''`. ** Debian GNU/Linux ** Peter Palfrader | : :' : The universal http://www.palfrader.org/ | `. `' Operating System | `- http://www.debian.org/ -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]