Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2561198imu; Thu, 29 Nov 2018 06:56:24 -0800 (PST) X-Google-Smtp-Source: AFSGD/W4UaCr4rP/xX7r19X3bplShosr8BxKDYXLLuHpFescOBlhbQYqSnC8ivWZcuSGYzManqCd X-Received: by 2002:a63:4342:: with SMTP id q63mr1502260pga.63.1543503384800; Thu, 29 Nov 2018 06:56:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543503384; cv=none; d=google.com; s=arc-20160816; b=r52f/AbFt491i64GUz/NtH3ZvAoJm+rhVHfZqOJGjz9oTIY/rtMu3hRocMuV/DIt32 /jessP6SUVi9JtPDfPvbek+lXXPUSzb9Qm/8I64K+nAkgluLzPM9dksp0r6je7TgXKBO lwW8toxQnmd6ZY2BxUgAxm2usST57FYJlOrqMYQ3mXVSA6/ccaVW997vC45CS8Kb5l/l ZvPSHYVxtko0/JAtHUjfwxC7g3Go1u1G8WfQkUGgOu/ylHasF16GJounoh3EpyrEZh16 PtlXsfdu/ADFzh7wMreykpXePPrwlFoTVTyffP1tmHqDG6vw7ZC8IKpHAlgODU6JM/jA WtBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=+TORtj9/BScnPyVs6ZU/5eXV2YAezqjKhTwAtFIEbqk=; b=uVHfZLhWpdOX6jz2wsvZM0Vw1gUoVrQKHsUyhvF2xTjNEQo6myxzey2NhO91Kjmk+d IlCU690qbiEH2Tv5823poriPXfQwc5bI8aDhZNpLFH4UmaYUIU4kT+XKAnOSmA4Qj2Zy 2X0koUTierEMsTOZQwpWlEemQ4fL/KhE5LMQ2fRdGT3klHdTGQxXJ6rTXf2QomGozGeF FmWbREYuW4VRthIKEyaPtushZZMl4YZ/o1wV2b+ctAy/F8I1j3J0T2OQnGUJZlLxJ6S0 1GYW21UWQ0RudrXBVFKhrffuDWbhmi1Epm1hbG7KzGBDrtdvLv6HrMxp490FnHbJ4v72 BrxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=cza8KOnJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k38si2064918pgi.235.2018.11.29.06.56.10; Thu, 29 Nov 2018 06:56:24 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=cza8KOnJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731771AbeK3B1T (ORCPT + 99 others); Thu, 29 Nov 2018 20:27:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:52100 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731108AbeK3B1S (ORCPT ); Thu, 29 Nov 2018 20:27:18 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 81B22205C9; Thu, 29 Nov 2018 14:21:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543501307; bh=toWCd2WZ2zckkukvjjNrJ7js04WAOneKS0hYDq2nbR4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cza8KOnJTqle5/rOsB9mTdS+TxBoreCdGz3pdOvvVz2QXWDYf+rhKRgHGcePH63gb F5j0JBkvT1VW5eDQe/LoNlodo0L8bV/3ne4UJ8b88YSBjUQ5I2g9ldTVJg0YGCTSfa Zy/gUj7/w4WRMCFtoo5QTvrAai+Wb7QzpR5kChnA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Prarit Bhargava , Jonathan Toppins , Jason Wessel , Daniel Thompson , kgdb-bugreport@lists.sourceforge.net, Sasha Levin Subject: [PATCH 4.9 37/92] kdb: Use strscpy with destination buffer size Date: Thu, 29 Nov 2018 15:12:06 +0100 Message-Id: <20181129140109.298303015@linuxfoundation.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181129140106.520639693@linuxfoundation.org> References: <20181129140106.520639693@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit c2b94c72d93d0929f48157eef128c4f9d2e603ce ] gcc 8.1.0 warns with: kernel/debug/kdb/kdb_support.c: In function ‘kallsyms_symbol_next’: kernel/debug/kdb/kdb_support.c:239:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=] strncpy(prefix_name, name, strlen(name)+1); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/debug/kdb/kdb_support.c:239:31: note: length computed here Use strscpy() with the destination buffer size, and use ellipses when displaying truncated symbols. v2: Use strscpy() Signed-off-by: Prarit Bhargava Cc: Jonathan Toppins Cc: Jason Wessel Cc: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net Reviewed-by: Daniel Thompson Signed-off-by: Daniel Thompson Signed-off-by: Sasha Levin --- kernel/debug/kdb/kdb_io.c | 15 +++++++++------ kernel/debug/kdb/kdb_private.h | 2 +- kernel/debug/kdb/kdb_support.c | 10 +++++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index 77777d918676..cc892a9e109d 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -215,7 +215,7 @@ static char *kdb_read(char *buffer, size_t bufsize) int count; int i; int diag, dtab_count; - int key; + int key, buf_size, ret; diag = kdbgetintenv("DTABCOUNT", &dtab_count); @@ -335,9 +335,8 @@ poll_again: else p_tmp = tmpbuffer; len = strlen(p_tmp); - count = kallsyms_symbol_complete(p_tmp, - sizeof(tmpbuffer) - - (p_tmp - tmpbuffer)); + buf_size = sizeof(tmpbuffer) - (p_tmp - tmpbuffer); + count = kallsyms_symbol_complete(p_tmp, buf_size); if (tab == 2 && count > 0) { kdb_printf("\n%d symbols are found.", count); if (count > dtab_count) { @@ -349,9 +348,13 @@ poll_again: } kdb_printf("\n"); for (i = 0; i < count; i++) { - if (WARN_ON(!kallsyms_symbol_next(p_tmp, i))) + ret = kallsyms_symbol_next(p_tmp, i, buf_size); + if (WARN_ON(!ret)) break; - kdb_printf("%s ", p_tmp); + if (ret != -E2BIG) + kdb_printf("%s ", p_tmp); + else + kdb_printf("%s... ", p_tmp); *(p_tmp + len) = '\0'; } if (i >= dtab_count) diff --git a/kernel/debug/kdb/kdb_private.h b/kernel/debug/kdb/kdb_private.h index 75014d7f4568..533e04e75a9c 100644 --- a/kernel/debug/kdb/kdb_private.h +++ b/kernel/debug/kdb/kdb_private.h @@ -83,7 +83,7 @@ typedef struct __ksymtab { unsigned long sym_start; unsigned long sym_end; } kdb_symtab_t; -extern int kallsyms_symbol_next(char *prefix_name, int flag); +extern int kallsyms_symbol_next(char *prefix_name, int flag, int buf_size); extern int kallsyms_symbol_complete(char *prefix_name, int max_len); /* Exported Symbols for kernel loadable modules to use. */ diff --git a/kernel/debug/kdb/kdb_support.c b/kernel/debug/kdb/kdb_support.c index d35cc2d3a4cc..2aed4a33521b 100644 --- a/kernel/debug/kdb/kdb_support.c +++ b/kernel/debug/kdb/kdb_support.c @@ -221,11 +221,13 @@ int kallsyms_symbol_complete(char *prefix_name, int max_len) * Parameters: * prefix_name prefix of a symbol name to lookup * flag 0 means search from the head, 1 means continue search. + * buf_size maximum length that can be written to prefix_name + * buffer * Returns: * 1 if a symbol matches the given prefix. * 0 if no string found */ -int kallsyms_symbol_next(char *prefix_name, int flag) +int kallsyms_symbol_next(char *prefix_name, int flag, int buf_size) { int prefix_len = strlen(prefix_name); static loff_t pos; @@ -235,10 +237,8 @@ int kallsyms_symbol_next(char *prefix_name, int flag) pos = 0; while ((name = kdb_walk_kallsyms(&pos))) { - if (strncmp(name, prefix_name, prefix_len) == 0) { - strncpy(prefix_name, name, strlen(name)+1); - return 1; - } + if (!strncmp(name, prefix_name, prefix_len)) + return strscpy(prefix_name, name, buf_size); } return 0; } -- 2.17.1