From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B73BC2BA16 for ; Fri, 3 Apr 2020 14:55:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1B21B20719 for ; Fri, 3 Apr 2020 14:55:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585925705; bh=lXK/9BcJVOj+M6ehn1nTLTD+KuTm5WBkF6JHvnAHLOw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=rorQHs2hFN67IUAAhObu+/ioCorx5NAwQM3bErlrpRsMs5WDcBfaFAWqtpZtksEE6 P1Pc9XpzHlzYS96R7BBDxB6I0BRCF7Pv8ZefyjUQqnFujas7DGMM30whaYq8CYJ9DZ xXwgBLPKI7GHOjBOEYYZAWIyyusoGJWo/Yy/dEXo= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404029AbgDCOzD (ORCPT ); Fri, 3 Apr 2020 10:55:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:59892 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727431AbgDCOzC (ORCPT ); Fri, 3 Apr 2020 10:55:02 -0400 Received: from quaco.ghostprotocols.net (unknown [179.97.37.151]) (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 83150208FE; Fri, 3 Apr 2020 14:54:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585925701; bh=lXK/9BcJVOj+M6ehn1nTLTD+KuTm5WBkF6JHvnAHLOw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tKgTPn5+zPTvwPjT1jXUXkiZcJ5tZ/uWGDWuIYBvH9efmF5aSWjUvr6uhKr24oIPv G7YPf/Xh8VR1Mi4OnU/Um3a3hpW+sO/0Hmo+qVZc32K+jyY7AEjBIvCzhsYBns0ZKD uRyMg+mhEpQdWvtNorjVLIiRYgnTSfzfM4Q9Jq70= From: Arnaldo Carvalho de Melo To: Ingo Molnar , Thomas Gleixner Cc: Jiri Olsa , Namhyung Kim , Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Ian Rogers , Alexander Shishkin , Andi Kleen , Jin Yao , Jiri Olsa , John Garry , Kan Liang , Mark Rutland , Peter Zijlstra , Stephane Eranian , clang-built-linux@googlegroups.com, Arnaldo Carvalho de Melo Subject: [PATCH 02/31] perf parse-events: Add defensive NULL check Date: Fri, 3 Apr 2020 11:54:14 -0300 Message-Id: <20200403145443.24774-3-acme@kernel.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200403145443.24774-1-acme@kernel.org> References: <20200403145443.24774-1-acme@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ian Rogers Terms may have a NULL config in which case a strcmp will SEGV. This can be reproduced with: perf stat -e '*/event=?,nr/' sleep 1 Add a NULL check to avoid this. This was caught by LLVM's libfuzzer. Signed-off-by: Ian Rogers Cc: Alexander Shishkin Cc: Andi Kleen Cc: Jin Yao Cc: Jiri Olsa Cc: John Garry Cc: Kan Liang Cc: Mark Rutland Cc: Namhyung Kim Cc: Peter Zijlstra Cc: Stephane Eranian Cc: clang-built-linux@googlegroups.com Link: http://lore.kernel.org/lkml/20200325164022.41385-1-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/pmu.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 616fbda7c3fc..ef6a63f3d386 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -984,12 +984,11 @@ static int pmu_resolve_param_term(struct parse_events_term *term, struct parse_events_term *t; list_for_each_entry(t, head_terms, list) { - if (t->type_val == PARSE_EVENTS__TERM_TYPE_NUM) { - if (!strcmp(t->config, term->config)) { - t->used = true; - *value = t->val.num; - return 0; - } + if (t->type_val == PARSE_EVENTS__TERM_TYPE_NUM && + t->config && !strcmp(t->config, term->config)) { + t->used = true; + *value = t->val.num; + return 0; } } -- 2.21.1