From nobody Thu Feb 13 00:38:34 2025 X-Original-To: dev-commits-src-branches@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 4Ytbrp74LCz5nZG9; Thu, 13 Feb 2025 00:38:34 +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 4Ytbrp5F01z40WF; Thu, 13 Feb 2025 00:38:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739407114; 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=YypEKDkeZGuXMlVZy+ztdZ4lXwKJ0WvHwtYji/kQXsE=; b=VjuXPynXJMiVUZ/p9QK4oe2sszCMFCwpEy3UjHuhAkkoQNNLVlXixeiHRk58tGmyXzk1+G ehwaKxiQS19UNBnnIruGDoBm+JdLob3XAsqjfcVUkgoDRn5Nfn3SdOH6UzQ4mMbuXd4aNs G3e3RKgccgfdc1wLpNcPnqJVdXlhgnm+RDFw6up0zQbMLqm+B+Qprz/ak52UcMuJmLjEpW xruWV0lsob9rqMGdgIS3NwsFCKqr8pjoR+JCcf3qWyHujXcQRO19exHUrOHDgoxwq3BSLb Ns2qzrv8XTqJ5Gtk9veYFJXShbSO71s3Y2CGaVk8tdJgsupSeKXRBDVh9LcnzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739407114; 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=YypEKDkeZGuXMlVZy+ztdZ4lXwKJ0WvHwtYji/kQXsE=; b=Mu5IbRinuaWh8q0jchDq91cz7lfB0ncwcZc05F/41tF7fz6EdlfkRE6Z1NGJ3WwnDcz2dk NIQqb6ED84V7/oGlRboe/wejvGAMba/0GOxH/R2V5UxUOlI/RFl5/8i37ABnETeYlALkL3 eOmyZaZolc4+AnI274W1cSuMqX9KjKBBkKg7xyc4MrE+B2oQ16k9Xl3Uo+LJAQnHDBaQww HTgVoms7NDE4OzxEdVkJaUxAProKTHKxfRwB8lmioGMSP6FYk4oa8Ww2WN9W7hoFWhEBK6 ug5LMrHbcsNehNMkDTZEiPyKZJhS31juUEvfTTNL5fimnNHTQQASy9ldJpDK6g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1739407114; a=rsa-sha256; cv=none; b=Zd4mtYJucReYZsE5staGw7jiOv/yS7mRVE/zoq/83DmoDWUz7kEiEGjRRLsOg7ocEn8aWo /AyLhYQTpfzqAW/Tw+ga8gLdUIBROLviLoapmGET58ck4WcISuYqi742fyFZIMHrmjy9V4 msmyrKRGXBTBYffpEpL3DCirPdbK9wSyuRGEgbYPb2K5wFHLLT7IFJPQBmbA5Yvq+Kb/kJ cx9cEl8I0/Gb+Zk+hD8XA12nSWBKsYCDNuVSGhKvkc9OZTD7PVWpW+tXyiYlb/Kjo+eapP FlLQ79sO4h/uOilKw7XAWG7jiz6KE3Xxm8AdtfGaKwMh7na9a9FG1bZxuGMn+w== 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 4Ytbrp4nd6z6T3; Thu, 13 Feb 2025 00:38:34 +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 51D0cY3x022770; Thu, 13 Feb 2025 00:38:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51D0cY9J022767; Thu, 13 Feb 2025 00:38:34 GMT (envelope-from git) Date: Thu, 13 Feb 2025 00:38:34 GMT Message-Id: <202502130038.51D0cY9J022767@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: 67cead936d0a - stable/14 - unifdef: Fix collision check when adding symbols. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/14 X-Git-Reftype: branch X-Git-Commit: 67cead936d0a38f76d1130fefbca3e119c8cffb8 Auto-Submitted: auto-generated The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=67cead936d0a38f76d1130fefbca3e119c8cffb8 commit 67cead936d0a38f76d1130fefbca3e119c8cffb8 Author: Dag-Erling Smørgrav AuthorDate: 2025-01-30 21:10:29 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-02-13 00:37:42 +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