From nobody Thu Feb 13 00:39:49 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YtbtF5X6Vz5nZsP; Thu, 13 Feb 2025 00:39:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YtbtF4bVBz41Rp; Thu, 13 Feb 2025 00:39:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739407189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=J14xchO08Sz9ymuyY0umla1GGxRfxPBqrxnnvJkz+ts=; b=mZkaC47o3cudvFQYO5lQTCSMaqiXyID3jczlh3gVcwCnJ/GeW08Eg9KcNzgOJh6V29hsqh Tk96MET0eqelA8aCmF/PEBlnu7AYSE9QP1m5YN9BihI+bJ60pmfxS5sw408lz+yIlNct+1 VoKu1nQh5OXQh6gJDPvcy7D/yNN3gb6aMEKH55WkFqumxm/KNvhMG0Zgawu8+yPP0iDUDy 51tEeYh6aUoaLEg3cUIVw+vWCZWdt2d7JV8edT0i/K5cp8pQSSWROTMcmUUR4S6aKCLNDj PVeRlYbckEwnMAORRiBLJYnqN9v0G1ILyuqc8VljiFI5rRhMKdAOc/JSXpmLzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739407189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=J14xchO08Sz9ymuyY0umla1GGxRfxPBqrxnnvJkz+ts=; b=TEb2W3GTQG89UWmGWDPfANc8TJoLfoOZpkt/eOxjHgDHtmeW/FYx+ehVWJ3SseCDJirCxq iA6hynrSfowF9N/71eXp4a5RQtUM8ufFIiKZuk+RaGad4OQotih9QrCvWkBpcRyL1hDKy8 hOPWdxEkSLYF7kpqI2gNkhhfv1SXlAmHTzr9T3WgaTUaQo2AKjXjd7i4hTdrZiibeIvpFN sKz4kyvJMSNYLurklZDVk/Yd08CunNbgv7NmUe2QNjUzWU0HHPToTNd30jBnNz0NkMvEWK +psSUGVbMzikKqC63i6+4NxN86Y56cONzD3QXO17S70sIfgrwh8eoxrZakU2Vw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1739407189; a=rsa-sha256; cv=none; b=u+QGosNLiAPHPokW0MGCW797jCuxpZqvdn0XH9qgMqOXweXXfaGlcAS2EzBdRRt25u9eaW B9H8Yn6fZhq4dU7BLpARYu29V061otqijmkLvBaspxwv3V6Qaute+Hv4AWqqRjdMlfzPaq 109LkMgid8pnWjXFSp1As6V5FnSRhRHb8L5qhHav1qud4WL7im2W2Sp+OAiOfjTarULnUF bWnfcOQiX3JSo8rnryKyuQYyhW0kZr3/rHP2lAC3sd6izj2hA+gkRkRLzKB+7cBSRw8VXu CR7eAIZ1gQmNaNoj4n5Qli8qtGU3ggKn0ThdHVwdU8hwPJFEfNcCrH2Ns0FC9A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YtbtF3Vl2z5DW; Thu, 13 Feb 2025 00:39:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 51D0dnS0023334; Thu, 13 Feb 2025 00:39:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51D0dnwL023331; Thu, 13 Feb 2025 00:39:49 GMT (envelope-from git) Date: Thu, 13 Feb 2025 00:39:49 GMT Message-Id: <202502130039.51D0dnwL023331@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 931b0990297e - stable/13 - unifdef: Fix collision check when adding symbols. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 931b0990297e2c6307b41bda95c5225cdf48403c Auto-Submitted: auto-generated The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=931b0990297e2c6307b41bda95c5225cdf48403c commit 931b0990297e2c6307b41bda95c5225cdf48403c Author: Dag-Erling Smørgrav AuthorDate: 2025-01-30 21:10:29 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-02-13 00:39:04 +0000 unifdef: Fix collision check when adding symbols. findsym() is intended for use while parsing input, so it should not be called from addsym2() or indirectsym(), which are called before any input is processed. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D48733 (cherry picked from commit c63af363c2458aebc30c01cd0b93b4b902580019) --- contrib/unifdef/unifdef.c | 11 +++++------ usr.bin/unifdef/tests/unifdef_test.sh | 10 ++++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/contrib/unifdef/unifdef.c b/contrib/unifdef/unifdef.c index 3dd4ace7b81e..ce8a1367adc2 100644 --- a/contrib/unifdef/unifdef.c +++ b/contrib/unifdef/unifdef.c @@ -1488,7 +1488,7 @@ findsym(const char **strp) static void indirectsym(void) { - const char *cp; + struct macro key = { 0 }; int changed; struct macro *sym, *ind; @@ -1497,10 +1497,9 @@ indirectsym(void) RB_FOREACH(sym, MACROMAP, ¯o_tree) { if (sym->value == NULL) continue; - cp = sym->value; - ind = findsym(&cp); + key.name = sym->value; + ind = RB_FIND(MACROMAP, ¯o_tree, &key); if (ind == NULL || ind == sym || - *cp != '\0' || ind->value == NULL || ind->value == sym->value) continue; @@ -1539,10 +1538,10 @@ addsym1(bool ignorethis, bool definethis, char *symval) static void addsym2(bool ignorethis, const char *symname, const char *val) { - const char *cp = symname; + struct macro key = { .name = symname }; struct macro *sym, *r; - sym = findsym(&cp); + sym = RB_FIND(MACROMAP, ¯o_tree, &key); if (sym == NULL) { sym = calloc(1, sizeof(*sym)); sym->ignore = ignorethis; diff --git a/usr.bin/unifdef/tests/unifdef_test.sh b/usr.bin/unifdef/tests/unifdef_test.sh index dfb08c187724..97a1b1aa6310 100644 --- a/usr.bin/unifdef/tests/unifdef_test.sh +++ b/usr.bin/unifdef/tests/unifdef_test.sh @@ -37,7 +37,17 @@ EOF atf_check -s exit:1 -o inline:"b\n" unifdef -DFOO -DFOO=0