Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1582818pxb; Wed, 10 Feb 2021 11:42:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJysIMi8F/q15MTMrsg8IiarOaMmCVld1N/wRQ591y6TM/ec3rHQxvnDxCJNl9+BTRr9nzse X-Received: by 2002:a17:906:a106:: with SMTP id t6mr4595452ejy.63.1612986123780; Wed, 10 Feb 2021 11:42:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612986123; cv=none; d=google.com; s=arc-20160816; b=qGB4mW/ZahE4RanF3czU1zI4lg/Kjn8EVBW4W7YhcD6m4tI3QIQeSsvyqiC3sPVIFt pQeB9kVFD56rDlp5iwPLtbwEpyQEmBcg8n/fsD+JCjHjKGrij67Ql6TBKrB4yNoeuRi+ wHlFjmnBVWt3SadUapEkdf6Jfs98otnqnXYyXAcbI92GAZEF3WZpN678lOi7vewyQan4 WNhSEeUTNbvm3I9TMhSs60hWQO2oxdKbEb/GEVos37qDKHqa2I7qaYuY3Dma3UT56J1P e/NSasCnphPKSwvrvV2wDYA3X37lvtmdFo+WSUUeVS+1qpdT1nbFkJln9c5EzqJyLFB2 xajg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:user-agent:date:message-id:cc:to:subject:from :dkim-signature; bh=I81yJZtEPT1n9yj0/hKZqLTI85QuMnBB8Jdw7b8uljw=; b=qIQmDFeehEmkoWt2mbkeCpBATwRgrhjJS9B6L9Y2aOuODTLzKI0Ot6PZYrZSEDBhso HU27w1ZB2ry7cpqXj9QV+c/zBgS61EwQMtjGv6vYwXW3FMeL1mNX2Y8wBzkU7OSrzCj5 OfFJOjoNxAv4+PyFKmEpwEDN7vp2kmBoBVHIeu5OpUhsCbhTWI3jtRaTktYobh2So4gF BBsVuLVB4KhxYQdspkV9oTraTLgc54OfupL5dWxucyY2x1AfYUS+u4pHwkbkVaWpZywE wGAmZIbEOofwl2xdmvabcf7ieHE1MN5va77N21BkuoAMy22Lg2mU9TpTv8U79OVn4rxL munA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail (test mode) header.i=@codeweavers.com header.s=6377696661 header.b=NVwJTR6H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=codeweavers.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m12si2073538edi.590.2021.02.10.11.41.39; Wed, 10 Feb 2021 11:42:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail (test mode) header.i=@codeweavers.com header.s=6377696661 header.b=NVwJTR6H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=codeweavers.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232164AbhBJTiz (ORCPT + 99 others); Wed, 10 Feb 2021 14:38:55 -0500 Received: from mail.codeweavers.com ([50.203.203.244]:43430 "EHLO mail.codeweavers.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232071AbhBJThA (ORCPT ); Wed, 10 Feb 2021 14:37:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=codeweavers.com; s=6377696661; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Date:Message-ID:Cc:To:Subject:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=I81yJZtEPT1n9yj0/hKZqLTI85QuMnBB8Jdw7b8uljw=; b=NVwJTR6HmMDqgYXR0ukwIunyYk /z1Ss52FiH+TGqa/eeh5LkXZAPYSwa5hRm0K4R18kEdEekyEPyts2A+XwBgYqwE4T+t/MjRcAsdYR RP/M4TAbKadU1h8tpu/wBz83iSxTZO/zpJJgPT7xwwFcuig/FULN+YkxIscF9VXLLbKU=; Received: from [10.69.141.136] by mail.codeweavers.com with esmtpsa (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1l9uzQ-0005Zj-Ll; Wed, 10 Feb 2021 13:17:30 -0600 From: Nicholas Fraser Subject: [PATCH 1/4] perf buildid-cache: Don't skip 16-byte build-ids To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , "Frank Ch. Eigler" , Song Liu , Adrian Hunter , Kim Phillips , Tommi Rantala , Remi Bernon , linux-kernel@vger.kernel.org Cc: Ulrich Czekalla , Huw Davies Message-ID: <597788e4-661d-633f-857c-3de700115d02@codeweavers.com> Date: Wed, 10 Feb 2021 14:17:25 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -40.6 X-Spam-Report: Spam detection software, running on the system "mail.codeweavers.com", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: lsdir_bid_tail_filter() ignored any build-id that wasn't exactly 20 bytes. This worked only for SHA-1 build-ids. The build-id for a PE file is always a 16-byte GUID and ELF files can also have MD5 or [...] Content analysis details: (-40.6 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 USER_IN_WELCOMELIST user is listed in 'welcomelist_from' -20 USER_IN_WHITELIST DEPRECATED: See USER_IN_WELCOMELIST -20 ALL_TRUSTED Passed through trusted hosts only via SMTP -0.5 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.0 AWL AWL: Adjusted score from AWL reputation of From: address Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org lsdir_bid_tail_filter() ignored any build-id that wasn't exactly 20 bytes. This worked only for SHA-1 build-ids. The build-id for a PE file is always a 16-byte GUID and ELF files can also have MD5 or UUID build-ids. This fix changes the filter to allow build-ids between 16 and 20 bytes. Signed-off-by: Nicholas Fraser --- tools/perf/util/build-id.c | 5 +++-- tools/perf/util/build-id.h | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c index 02df36b30ac5..e32e8f2ff3bd 100644 --- a/tools/perf/util/build-id.c +++ b/tools/perf/util/build-id.c @@ -448,7 +448,8 @@ static bool lsdir_bid_tail_filter(const char *name __maybe_unused, int i = 0; while (isxdigit(d->d_name[i]) && i < SBUILD_ID_SIZE - 3) i++; - return (i == SBUILD_ID_SIZE - 3) && (d->d_name[i] == '\0'); + return (i >= SBUILD_ID_MIN_SIZE - 3) && (i <= SBUILD_ID_SIZE - 3) && + (d->d_name[i] == '\0'); } struct strlist *build_id_cache__list_all(bool validonly) @@ -490,7 +491,7 @@ struct strlist *build_id_cache__list_all(bool validonly) } strlist__for_each_entry(nd2, linklist) { if (snprintf(sbuild_id, SBUILD_ID_SIZE, "%s%s", - nd->s, nd2->s) != SBUILD_ID_SIZE - 1) + nd->s, nd2->s) > SBUILD_ID_SIZE - 1) goto err_out; if (validonly && !build_id_cache__valid_id(sbuild_id)) continue; diff --git a/tools/perf/util/build-id.h b/tools/perf/util/build-id.h index 02613f4b2c29..c19617151670 100644 --- a/tools/perf/util/build-id.h +++ b/tools/perf/util/build-id.h @@ -2,8 +2,10 @@ #ifndef PERF_BUILD_ID_H_ #define PERF_BUILD_ID_H_ 1 -#define BUILD_ID_SIZE 20 +#define BUILD_ID_SIZE 20 /* SHA-1 length in bytes */ +#define BUILD_ID_MIN_SIZE 16 /* MD5/UUID/GUID length in bytes */ #define SBUILD_ID_SIZE (BUILD_ID_SIZE * 2 + 1) +#define SBUILD_ID_MIN_SIZE (BUILD_ID_MIN_SIZE * 2 + 1) #include "machine.h" #include "tool.h" -- 2.30.0