Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2515460imu; Thu, 29 Nov 2018 06:16:44 -0800 (PST) X-Google-Smtp-Source: AFSGD/VYDkGbJW6/xZHK8hhMiguIQTUImeTvIFsHFNWJ7b3sjjHvavaqGiam/OlVGydqYYLhAEXH X-Received: by 2002:a17:902:e201:: with SMTP id ce1-v6mr1665389plb.138.1543501004929; Thu, 29 Nov 2018 06:16:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543501004; cv=none; d=google.com; s=arc-20160816; b=No4itHPVFGjnQvJcCAPcoN14cwwpI0ASjmUPF8Ug4vEah8vvP0SvLfsK9IRp5XgeKa 05+P3N7DDBHifdifvSZqC2Hn4DlfcTYBhGyhx0lfHZdtQTLTNxkPjz9i+qWLVWyKEjLT FuMgKyzPTBU5jot2oK+W1JDTT55SE0FDHRddDezfETf2W8M4mXPeVAXPryczO0Q4axKd mWtDt86KvPKTHSQIIjKjko+pJuj8ASRY7HS3laLtZXpS5/E3LtPFHh5V1fmJ8mwBtJDj 7BoDyfLntV9QQER0SQ9LVJ0zEJ+NA+GHi3+LDlrPrRLCoZLvZQv8DOMQdBhVJ6o1YHVl wL/Q== 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=rZenWUBtQV4d/UaejQ15B8PAU5Je2wns8vmfq7qZxs4=; b=BFZYamxNe0M9+XJkdgg/v0QtlxNA/pSTsDYXzfy6rQC8Hk7JSmL0WihJLqloLZpT17 mZxDHoIg3EWYYHTVMOM+EjEYmYgSjzQW+KIyHPBAgamnsZwhQoKqs+sMi146MaMBOR3W W+XNcSrFpnaC0vJGIF+n04XGnsSVjcmR9dvCQJoUxRSXEX/ibDDDNalVuCbCD9U8oLZ7 G6z0GAHjHSgeqjYrU5+hLey28nhHZOY6tKIBAAvxk+CIHH3mhsLwBle74rtUmFmbGi3Q et7k4DKeWL9FjI0vqj1HKqYC5aOCrCcqzbf7lNoyVixErYykyo6Y/ryjXMVjI/5OCPFu 8lAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=mdxKRWY2; 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 b14si2287070pfc.156.2018.11.29.06.16.06; Thu, 29 Nov 2018 06:16:44 -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=mdxKRWY2; 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 S1728678AbeK3BTV (ORCPT + 99 others); Thu, 29 Nov 2018 20:19:21 -0500 Received: from mail.kernel.org ([198.145.29.99]:39826 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726989AbeK3BTU (ORCPT ); Thu, 29 Nov 2018 20:19:20 -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 E2DE4205C9; Thu, 29 Nov 2018 14:13:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543500830; bh=gB2IJmUD3EDJH9TWZEUtn4MZ0KwVGUbMyum6dQYGxEk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mdxKRWY2iQ8ChRUq7EheQh5AffuDsI/Sl1Sv5qROfxF6EGxootq+xpCNLIsGJ91Zi bvR2r668j2z8dqorWKnSZ7lEu6lZp48kzifu8zuv9+gWfcqvYfAlJOAR3xYLfntru9 xGPjsRWEl0uF8WR7SIUy4aoPt/ax4cQ5pG+rgQiE= 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 3.18 16/83] kdb: Use strscpy with destination buffer size Date: Thu, 29 Nov 2018 15:11:34 +0100 Message-Id: <20181129140139.008141799@linuxfoundation.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181129140138.002176596@linuxfoundation.org> References: <20181129140138.002176596@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 3.18-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 681c8b42e013..1c6b7055f11f 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 7afd3c8c41d5..439f1c8b1193 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