Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp2342611imm; Thu, 11 Oct 2018 08:48:38 -0700 (PDT) X-Google-Smtp-Source: ACcGV63rMfp5T0QiCf5PuhNwgpkBB+hJtPIOsbCZCZaCAeJkKJVzljqz2FbGSyN+r5BA0D5i+3RF X-Received: by 2002:a17:902:f096:: with SMTP id go22mr2098306plb.235.1539272917957; Thu, 11 Oct 2018 08:48:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539272917; cv=none; d=google.com; s=arc-20160816; b=kLhMPXDdcIJXCjMlMZsc3DMmVX5JD8YGZdGHsyEoGRRcLpl2JLqypTZ2YM8WPeZS6L OMbg6bVkzJRUXIC+qwLqrSPa0/xT+5d+QG6fChE7FNGm8R9Q7lyvo7tq8e7C+/IIQqQj 6/ufT6U0+uehJXVLPcZocaskXnNcrk0ahb4iDNBiNuO2BZB9fBo0bne0LdssnTk9bLRE xM2e79HICtLtu4e8GdNdikiJnyChuue9kwHmnqr4fK67njey8KlxvrGxT43DSBJ1r8Br 4OuruN7sV256Tz82ltLV9aivBXujF76FIFNf03ciOW4kW8OwtqNNAvGs9Ur5Z6AVNdmy afzA== 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=suaeK6PK/mWlBx9Zc1glHjwsH3kf2JxGy2PbYS6igRM=; b=D1ul/4N30zxufIIrXMQ1pRxpY0Ay0guG+B0BjUGExAXC3B8IKAMH6jeUMPLLLvCVES ZBtsfXJf2ByYYsrcZH34Ezr2Et7S0Mr+ZjOye8RZolVOQsnQrhqQuCvsf5qCP2N2KXWo QKBdMsdbOmn2qBPcqZo4xonUl7AMeh85xyiTFCHWsKFZ4T4kqBQQI4DNrw1hZWx/7/lO 9cWobx7RXLuJSsGQCoSdXHmlwq/BCYs5JBdqu1XynJm/w2X15kYFrfflBqBsRPMaZZso sjFBVqsocOGos2Vr7QE+xZP6sE+ClPtZ5YR0P3sF6zBVPxQH0jIg3ZkO2YmiirnMjJzS Aisg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ft9nbbxU; 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 s6-v6si36537170pfd.59.2018.10.11.08.48.23; Thu, 11 Oct 2018 08:48:37 -0700 (PDT) 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=ft9nbbxU; 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 S1731449AbeJKXNl (ORCPT + 99 others); Thu, 11 Oct 2018 19:13:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:46376 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726700AbeJKXNk (ORCPT ); Thu, 11 Oct 2018 19:13:40 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 98DFC2085B; Thu, 11 Oct 2018 15:45:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539272755; bh=Z2heITmyN4wkJqqahJIoIUneT2qIxVBQZTcf3VjWTSU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ft9nbbxUdZO6VL8C3AWHBguTQQOvt3L+C5xg6mDBB0sHhnBOVrh1ZOAexsVhE0PPv +oBcrQ9q+Z7JXoVdDxZwC5KieXHDDlfMkQfltHAWdluy6n+mbvp6la7jZf7XPhtkIh cUO5vNh+9ortp2XiU2cUaOh/93YYhWBVb1Vst2HM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Adrian Hunter , David Ahern , Jin Yao , Jiri Olsa , Namhyung Kim , Wang Nan , Arnaldo Carvalho de Melo , Ignat Korchagin Subject: [PATCH 4.14 27/45] perf annotate: Use asprintf when formatting objdump command line Date: Thu, 11 Oct 2018 17:39:54 +0200 Message-Id: <20181011152510.048997750@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181011152508.885515042@linuxfoundation.org> References: <20181011152508.885515042@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.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Arnaldo Carvalho de Melo commit 6810158d526e483868e519befff407b91e76b3db upstream. We were using a local buffer with an arbitrary size, that would have to get increased to avoid truncation as warned by gcc 8: util/annotate.c: In function 'symbol__disassemble': util/annotate.c:1488:4: error: '%s' directive output may be truncated writing up to 4095 bytes into a region of size between 3966 and 8086 [-Werror=format-truncation=] "%s %s%s --start-address=0x%016" PRIx64 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ util/annotate.c:1498:20: symfs_filename, symfs_filename); ~~~~~~~~~~~~~~ util/annotate.c:1490:50: note: format string is defined here " -l -d %s %s -C \"%s\" 2>/dev/null|grep -v \"%s:\"|expand", ^~ In file included from /usr/include/stdio.h:861, from util/color.h:5, from util/sort.h:8, from util/annotate.c:14: /usr/include/bits/stdio2.h:67:10: note: '__builtin___snprintf_chk' output 116 or more bytes (assuming 8331) into a destination of size 8192 return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __bos (__s), __fmt, __va_arg_pack ()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ So switch to asprintf, that will make sure enough space is available. Cc: Adrian Hunter Cc: David Ahern Cc: Jin Yao Cc: Jiri Olsa Cc: Namhyung Kim Cc: Wang Nan Link: https://lkml.kernel.org/n/tip-qagoy2dmbjpc9gdnaj0r3mml@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo Cc: Ignat Korchagin Signed-off-by: Greg Kroah-Hartman --- tools/perf/util/annotate.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -1432,7 +1432,7 @@ int symbol__disassemble(struct symbol *s struct arch **parch, char *cpuid) { struct dso *dso = map->dso; - char command[PATH_MAX * 2]; + char *command; struct arch *arch = NULL; FILE *file; char symfs_filename[PATH_MAX]; @@ -1496,7 +1496,7 @@ int symbol__disassemble(struct symbol *s strcpy(symfs_filename, tmp); } - snprintf(command, sizeof(command), + err = asprintf(&command, "%s %s%s --start-address=0x%016" PRIx64 " --stop-address=0x%016" PRIx64 " -l -d %s %s -C \"%s\" 2>/dev/null|grep -v \"%s:\"|expand", @@ -1509,12 +1509,17 @@ int symbol__disassemble(struct symbol *s symbol_conf.annotate_src ? "-S" : "", symfs_filename, symfs_filename); + if (err < 0) { + pr_err("Failure allocating memory for the command to run\n"); + goto out_remove_tmp; + } + pr_debug("Executing: %s\n", command); err = -1; if (pipe(stdout_fd) < 0) { pr_err("Failure creating the pipe to run %s\n", command); - goto out_remove_tmp; + goto out_free_command; } pid = fork(); @@ -1541,7 +1546,7 @@ int symbol__disassemble(struct symbol *s * If we were using debug info should retry with * original binary. */ - goto out_remove_tmp; + goto out_free_command; } nline = 0; @@ -1570,6 +1575,8 @@ int symbol__disassemble(struct symbol *s fclose(file); err = 0; +out_free_command: + free(command); out_remove_tmp: close(stdout_fd[0]); @@ -1583,7 +1590,7 @@ out: out_close_stdout: close(stdout_fd[1]); - goto out_remove_tmp; + goto out_free_command; } static void insert_source_line(struct rb_root *root, struct source_line *src_line)