diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2006-08-29 20:06:13 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 17:54:35 -0400 |
commit | b6fe17d6cc5d570b72f8e4da351b593c5a680355 (patch) | |
tree | 7245b8476733a9066e453d53c5eb86d168db8b33 /net | |
parent | 3696f625e2efa1f1b228b276788274e1eb86fcfa (diff) |
[NET] netdev: Check name length
Some improvements to robust name interface. These API's are safe
now by convention, but it is worth providing some safety checks
against future bugs.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/dev.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index fc82f6f6e1c1..14de297d024d 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -640,6 +640,8 @@ int dev_valid_name(const char *name) | |||
640 | { | 640 | { |
641 | if (*name == '\0') | 641 | if (*name == '\0') |
642 | return 0; | 642 | return 0; |
643 | if (strlen(name) >= IFNAMSIZ) | ||
644 | return 0; | ||
643 | if (!strcmp(name, ".") || !strcmp(name, "..")) | 645 | if (!strcmp(name, ".") || !strcmp(name, "..")) |
644 | return 0; | 646 | return 0; |
645 | 647 | ||
@@ -3191,13 +3193,15 @@ struct net_device *alloc_netdev(int sizeof_priv, const char *name, | |||
3191 | struct net_device *dev; | 3193 | struct net_device *dev; |
3192 | int alloc_size; | 3194 | int alloc_size; |
3193 | 3195 | ||
3196 | BUG_ON(strlen(name) >= sizeof(dev->name)); | ||
3197 | |||
3194 | /* ensure 32-byte alignment of both the device and private area */ | 3198 | /* ensure 32-byte alignment of both the device and private area */ |
3195 | alloc_size = (sizeof(*dev) + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST; | 3199 | alloc_size = (sizeof(*dev) + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST; |
3196 | alloc_size += sizeof_priv + NETDEV_ALIGN_CONST; | 3200 | alloc_size += sizeof_priv + NETDEV_ALIGN_CONST; |
3197 | 3201 | ||
3198 | p = kzalloc(alloc_size, GFP_KERNEL); | 3202 | p = kzalloc(alloc_size, GFP_KERNEL); |
3199 | if (!p) { | 3203 | if (!p) { |
3200 | printk(KERN_ERR "alloc_dev: Unable to allocate device.\n"); | 3204 | printk(KERN_ERR "alloc_netdev: Unable to allocate device.\n"); |
3201 | return NULL; | 3205 | return NULL; |
3202 | } | 3206 | } |
3203 | 3207 | ||