firewire: core: add_descriptor size check
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sun, 24 Jan 2010 13:47:02 +0000 (14:47 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 26 Jan 2010 19:54:50 +0000 (20:54 +0100)
commite300839da40e99581581c5d053a95a172651fec8
treebb6c59a38828f4af0fd728f959dcbd39546891ce
parent92dcffb916d309aa01778bf8963a6932e4014d07
firewire: core: add_descriptor size check

Presently, firewire-core only checks whether descriptors that are to be
added by userspace drivers to the local node's config ROM do not exceed
a size of 256 quadlets.  However, the sum of the bare minimum ROM plus
all descriptors (from firewire-core, from firewire-net, from userspace)
must not exceed 256 quadlets.

Otherwise, the bounds of a statically allocated buffer will be
overwritten.  If the kernel survives that, firewire-core will
subsequently be unable to parse the local node's config ROM.

(Note, userspace drivers can add descriptors only through device files
of local nodes.  These are usually only accessible by root, unlike
device files of remote nodes which may be accessible to lesser
privileged users.)

Therefore add a test which takes the actual present and required ROM
size into account for all descriptors of kernelspace and userspace
drivers.

Cc: stable@kernel.org
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/core-card.c