From patchwork Mon Jan 7 03:19:06 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Perches X-Patchwork-Id: 209848 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 246E32C007C for ; Mon, 7 Jan 2013 14:19:14 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753505Ab3AGDTJ (ORCPT ); Sun, 6 Jan 2013 22:19:09 -0500 Received: from perches-mx.perches.com ([206.117.179.246]:38699 "EHLO labridge.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753395Ab3AGDTI (ORCPT ); Sun, 6 Jan 2013 22:19:08 -0500 Received: from [173.51.221.202] (account joe@perches.com HELO [192.168.1.167]) by labridge.com (CommuniGate Pro SMTP 5.0.14) with ESMTPA id 20472527; Sun, 06 Jan 2013 19:19:06 -0800 Message-ID: <1357528746.4940.31.camel@joe-AO722> Subject: Re: [PATCH] drivers/net/wireless/ipw2x00: use strlcpy instead of strncpy From: Joe Perches To: Chen Gang Cc: stas.yakovlev@gmail.com, linville@tuxdriver.com, linux-wireless@vger.kernel.org, netdev@vger.kernel.org Date: Sun, 06 Jan 2013 19:19:06 -0800 In-Reply-To: <50EA37CE.1090901@asianux.com> References: <50E82D7D.4090107@asianux.com> <1357396966.21156.4.camel@joe-AO722> <50EA37CE.1090901@asianux.com> X-Mailer: Evolution 3.6.0-0ubuntu3 Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Mon, 2013-01-07 at 10:49 +0800, Chen Gang wrote: > but I think the original author intended to use escaped instead of ssid > DECLARE_SSID_BUF(ssid) (line 5525, 5737) > use ssid to print debug information directly > (such as: line 5530..5535, 5545..5549, 5745..5749, ...) > when need print additional information, use escaped > (line 5559..5569, 5773..5782, 5791..5799) > > so, I still suggest: > only fix the bug (use strlcpy instead of strncpy) > and not touch original features which orignal author intended using. More likely John Linville just missed the conversions. 4+ years ago. commit 9387b7caf3049168fc97a8a9111af8fe2143af18 Author: John W. Linville Date: Tue Sep 30 20:59:05 2008 -0400 wireless: use individual buffers for printing ssid values Also change escape_ssid to print_ssid to match print_mac semantics. Signed-off-by: John W. Linville Maybe these days this should be another vsprintf %p extension like %pM when the DECLARE_MAC_BUF/print_mac uses were converted. (or maybe extend %ph for ssids with %*phs, length, array) But if and until then, I suggest this instead: drivers/net/wireless/ipw2x00/ipw2200.c | 38 ++++++++++++++-------------------- 1 file changed, 15 insertions(+), 23 deletions(-) --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c index 844f201..3dc6a92 100644 --- a/drivers/net/wireless/ipw2x00/ipw2200.c +++ b/drivers/net/wireless/ipw2x00/ipw2200.c @@ -5556,15 +5556,12 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv, ((network->ssid_len != priv->essid_len) || memcmp(network->ssid, priv->essid, min(network->ssid_len, priv->essid_len)))) { - char escaped[IW_ESSID_MAX_SIZE * 2 + 1]; + DECLARE_SSID_BUF(escaped); - strncpy(escaped, - print_ssid(ssid, network->ssid, - network->ssid_len), - sizeof(escaped)); - IPW_DEBUG_MERGE("Network '%s (%pM)' excluded " - "because of ESSID mismatch: '%s'.\n", - escaped, network->bssid, + IPW_DEBUG_MERGE("Network '%s (%pM)' excluded because of ESSID mismatch: '%s'\n", + print_ssid(escaped, network->ssid, + network->ssid_len), + network->bssid, print_ssid(ssid, priv->essid, priv->essid_len)); return 0; @@ -5770,14 +5767,11 @@ static int ipw_best_network(struct ipw_priv *priv, ((network->ssid_len != priv->essid_len) || memcmp(network->ssid, priv->essid, min(network->ssid_len, priv->essid_len)))) { - char escaped[IW_ESSID_MAX_SIZE * 2 + 1]; - strncpy(escaped, - print_ssid(ssid, network->ssid, - network->ssid_len), - sizeof(escaped)); - IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded " - "because of ESSID mismatch: '%s'.\n", - escaped, network->bssid, + DECLARE_SSID_BUF(escaped); + IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded because of ESSID mismatch: '%s'\n", + print_ssid(escaped, network->ssid, + network->ssid_len), + network->bssid, print_ssid(ssid, priv->essid, priv->essid_len)); return 0; @@ -5787,13 +5781,11 @@ static int ipw_best_network(struct ipw_priv *priv, /* If the old network rate is better than this one, don't bother * testing everything else. */ if (match->network && match->network->stats.rssi > network->stats.rssi) { - char escaped[IW_ESSID_MAX_SIZE * 2 + 1]; - strncpy(escaped, - print_ssid(ssid, network->ssid, network->ssid_len), - sizeof(escaped)); - IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded because " - "'%s (%pM)' has a stronger signal.\n", - escaped, network->bssid, + DECLARE_SSID_BUF(escaped); + IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded because '%s (%pM)' has a stronger signal\n", + print_ssid(escaped, network->ssid, + network->ssid_len), + network->bssid, print_ssid(ssid, match->network->ssid, match->network->ssid_len), match->network->bssid);