Re: [PATCH] catch potential null derefs in drivers/char/ip2main.c (245ac16)

From: Michael H. Warfield (mhw@wittsend.com)
Date: Sun Jun 24 2001 - 18:14:00 EST


On Sun, Jun 24, 2001 at 11:06:06PM +0200, Rasmus Andersen wrote:
> Hi.

> (My last mail to dougm@computone.com bounced. Is there another
> maintainer for drivers/char/ip2main.c somewhere?)

        I'm still here. :-) Just look one more line down below
Doug's line. There I am.

        I'm responsible for the kernel / driver integration end of it
anyways.

        I'll find out what's up with Doug, but this is my issue to deal
with anyways. And yes, I'm looking at it. I've got a couple of other
patches on the back burner that are overdue for integration.

> The patch below tries to avoid dereferencing (potential)
> NULL pointers. It was reported by the Stanford team way
> back and applies against 245ac16 and 246p6. It could
> probably be done nicer but that would take someone that
> actually understands this code.

> --- linux-245-ac16-clean/drivers/char/ip2main.c Sat May 19 20:58:17 2001
> +++ linux-245-ac16/drivers/char/ip2main.c Sun Jun 24 22:37:27 2001
> @@ -866,36 +866,38 @@
> }
>
> #ifdef CONFIG_DEVFS_FS
> - sprintf( name, "ipl%d", i );
> - i2BoardPtrTable[i]->devfs_ipl_handle =
> - devfs_register (devfs_handle, name,
> - DEVFS_FL_DEFAULT,
> - IP2_IPL_MAJOR, 4 * i,
> - S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR,
> - &ip2_ipl, NULL);
> + if (i2BoardPtrTable[i] && pB) {
> + sprintf( name, "ipl%d", i );
> + i2BoardPtrTable[i]->devfs_ipl_handle =
> + devfs_register (devfs_handle, name,
> + DEVFS_FL_DEFAULT,
> + IP2_IPL_MAJOR, 4 * i,
> + S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR,
> + &ip2_ipl, NULL);
>
> - sprintf( name, "stat%d", i );
> - i2BoardPtrTable[i]->devfs_stat_handle =
> - devfs_register (devfs_handle, name,
> - DEVFS_FL_DEFAULT,
> - IP2_IPL_MAJOR, 4 * i + 1,
> - S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR,
> - &ip2_ipl, NULL);
> + sprintf( name, "stat%d", i );
> + i2BoardPtrTable[i]->devfs_stat_handle =
> + devfs_register (devfs_handle, name,
> + DEVFS_FL_DEFAULT,
> + IP2_IPL_MAJOR, 4 * i + 1,
> + S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR,
> + &ip2_ipl, NULL);
>
> - for ( box = 0; box < ABS_MAX_BOXES; ++box )
> - {
> - for ( j = 0; j < ABS_BIGGEST_BOX; ++j )
> - {
> - if ( pB->i2eChannelMap[box] & (1 << j) )
> + for ( box = 0; box < ABS_MAX_BOXES; ++box )
> {
> - tty_register_devfs(&ip2_tty_driver,
> - 0, j + ABS_BIGGEST_BOX *
> - (box+i*ABS_MAX_BOXES));
> - tty_register_devfs(&ip2_callout_driver,
> - 0, j + ABS_BIGGEST_BOX *
> - (box+i*ABS_MAX_BOXES));
> + for ( j = 0; j < ABS_BIGGEST_BOX; ++j )
> + {
> + if ( pB->i2eChannelMap[box] & (1 << j) )
> + {
> + tty_register_devfs(&ip2_tty_driver,
> + 0, j + ABS_BIGGEST_BOX *
> + (box+i*ABS_MAX_BOXES));
> + tty_register_devfs(&ip2_callout_driver,
> + 0, j + ABS_BIGGEST_BOX *
> + (box+i*ABS_MAX_BOXES));
> + }
> + }
> }
> - }
> }
> #endif
>
> --
> Regards,
> Rasmus(rasmus@jaquet.dk)
>
> A chicken and an egg are lying in bed. The chicken is smoking a
> cigarette with a satisfied smile on it's face and the egg is frowning
> and looking a bit pissed off. The egg mutters, to no-one in particular,
> "Well, I guess we answered THAT question..."

-- 
 Michael H. Warfield    |  (770) 985-6132   |  mhw@WittsEnd.com
  (The Mad Wizard)      |  (678) 463-0932   |  http://www.wittsend.com/mhw/
  NIC whois:  MHW9      |  An optimist believes we live in the best of all
 PGP Key: 0xDF1DD471    |  possible worlds.  A pessimist is sure of it!

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Jun 30 2001 - 21:00:10 EST