1From: Vasiliy Kulikov <segoon@openwall.com>
2Subject: [PATCH] core: dev: don't call BUG() on bad input
3Date: Mon, 14 Feb 2011 13:56:06 +0300
4Lines: 36
5Message-ID: <1297680967-11893-1-git-send-email-segoon@openwall.com>
6Cc: "David S. Miller" <davem@davemloft.net>,
7	Eric Dumazet <eric.dumazet@gmail.com>,
8	Tom Herbert <therbert@google.com>,
9	Changli Gao <xiaosuo@gmail.com>,
10	Jesse Gross <jesse@nicira.com>, netdev@vger.kernel.org
11To: linux-kernel@vger.kernel.org
12X-From: netdev-owner@vger.kernel.org Mon Feb 14 11:56:26 2011
13Return-path: <netdev-owner@vger.kernel.org>
14Envelope-to: linux-netdev-2@lo.gmane.org
15Received: from vger.kernel.org ([209.132.180.67])
16	by lo.gmane.org with esmtp (Exim 4.69)
17	(envelope-from <netdev-owner@vger.kernel.org>)
18	id 1Pow6Q-0007p5-UJ
19	for linux-netdev-2@lo.gmane.org; Mon, 14 Feb 2011 11:56:23 +0100
20Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
21	id S1753243Ab1BNK4O (ORCPT <rfc822;linux-netdev-2@m.gmane.org>);
22	Mon, 14 Feb 2011 05:56:14 -0500
23Received: from mail-bw0-f46.google.com ([209.85.214.46]:60909 "EHLO
24	mail-bw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
25	with ESMTP id S1752645Ab1BNK4M (ORCPT
26	<rfc822;netdev@vger.kernel.org>); Mon, 14 Feb 2011 05:56:12 -0500
27Received: by bwz15 with SMTP id 15so5332720bwz.19
28        for <multiple recipients>; Mon, 14 Feb 2011 02:56:11 -0800 (PST)
29DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
30        d=gmail.com; s=gamma;
31        h=domainkey-signature:sender:from:to:cc:subject:date:message-id
32         :x-mailer;
33        bh=YQn7OCqAZuXaSsRtgaQYckH74o43k6Rppt54AR6UzDo=;
34        b=CxfBmTAbcMf7ySl3szqU/hLEMbY7aJ+FjefneMcTm/AmBnyihy20JuV2k0yYJzcIBi
35         9+2npC4H9oJn7/ocVARq88j9ZA/4firOi9ZddgGu6c8+o0tWoZylA1ehtHzzk+4I173l
36         H8guqK5rplkryj6+PStELYYt36SpAVfaL2EdY=
37DomainKey-Signature: a=rsa-sha1; c=nofws;
38        d=gmail.com; s=gamma;
39        h=sender:from:to:cc:subject:date:message-id:x-mailer;
40        b=G0AqVbcip2oFA2IqAQa6TWwQydu/mJFzt98tGkR1fVNl3m+HaKY433gNCR+Dqdv0gA
41         SGL/R3HRiBBBku/GM4x3gQ8SoAFZiREw6PDtkU55l/mk+yS+v+8YTq7/InPxHoHeTWsv
42         pX0mWUI2HtTXKALBiM+nLsnBWtcC8yInYtyeQ=
43Received: by 10.204.61.73 with SMTP id s9mr6247440bkh.185.1297680970948;
44        Mon, 14 Feb 2011 02:56:10 -0800 (PST)
45Received: from localhost (ppp91-77-40-235.pppoe.mtu-net.ru [91.77.40.235])
46        by mx.google.com with ESMTPS id u23sm1686152bkw.9.2011.02.14.02.56.09
47        (version=TLSv1/SSLv3 cipher=OTHER);
48        Mon, 14 Feb 2011 02:56:10 -0800 (PST)
49X-Mailer: git-send-email 1.7.0.4
50Sender: netdev-owner@vger.kernel.org
51Precedence: bulk
52List-ID: <netdev.vger.kernel.org>
53X-Mailing-List: netdev@vger.kernel.org
54Archived-At: <http://permalink.gmane.org/gmane.linux.kernel/1099668>
55
56alloc_netdev() may be called with too long name (more that IFNAMSIZ bytes).
57Currently this leads to BUG().  Other insane inputs (bad txqs, rxqs) and
58even OOM don't lead to BUG().  Made alloc_netdev() return NULL, like on
59other errors.
60
61Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
62---
63 Compile tested.
64
65 net/core/dev.c |    5 ++++-
66 1 files changed, 4 insertions(+), 1 deletions(-)
67
68diff --git a/net/core/dev.c b/net/core/dev.c
69index 6392ea0..12ef4b0 100644
70--- a/net/core/dev.c
71+++ b/net/core/dev.c
72@@ -5761,7 +5761,10 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
73 	size_t alloc_size;
74 	struct net_device *p;
75
76-	BUG_ON(strlen(name) >= sizeof(dev->name));
77+	if (strnlen(name, sizeof(dev->name)) >= sizeof(dev->name)) {
78+		pr_err("alloc_netdev: Too long device name \n");
79+		return NULL;
80+	}
81
82 	if (txqs < 1) {
83 		pr_err("alloc_netdev: Unable to allocate device "
84--
851.7.0.4
86
87--
88To unsubscribe from this list: send the line "unsubscribe netdev" in
89the body of a message to majordomo@vger.kernel.org
90More majordomo info at  http://vger.kernel.org/majordomo-info.html
91
92
93
94