From nobody Mon Jan 12 17:19:31 2026 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 4dqfJ44DXWz6NrPn for ; Mon, 12 Jan 2026 17:19:32 +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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dqfJ36r1pz41sd for ; Mon, 12 Jan 2026 17:19:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768238372; 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=3pTmERncgNrTWYYktr6/8JmV0U/6h/NP8w+YX7HiqJ8=; b=ZpUnidhkuuQ80zkqVPPBqmstTmS/wGP1t/YCOnKGVi3PccrBx8z32HnPuZSeZO7xCdfieu +1Qx7MWV7CXrw3hpwpzyGkqCzDa3ypgjgPbGhzWicu0lQdQR81QXbm9IXUVya+1V7LqPXT GONleRuZiGdUrbKfpUJDvg7ha+yXWaY2aliC+o1QfHPbXSqEC1j9cIE/4otFkhY3/yMjjr 1zeLuAZU+j2bl4CM3keuAcQF94t7YklC0wfxPJPwnYFK7KYMNgAFETHyU4ZRN76D/2mikx 9+wSLo19gZsWV5d9mqFvFgmO68R9teq5gPn/uZL+0lDqMaBgIggdiemc3iodzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768238372; 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=3pTmERncgNrTWYYktr6/8JmV0U/6h/NP8w+YX7HiqJ8=; b=vgFF7r4UFqJsfrSwOwCbaGLm8mRT2WeP2NXiKsgJjx9l4FfU1ycaXv9vUdds6qZb5wJh9q Chl9TyGYLZ23cDUsJUjRBAPOUvPOS1d/g1AzNiPUVo7hRnJ8x+v1GjhLn5SDrC/SjfPJvU 8kaMkTdI5wU3yYh/G+CrIqL7AvvG4XyJ3E57Rmhccu0VlrGjh9wwKFm7trArK9PHHtHGir EkjclPVVUVlitgZULQdpV8v3Wf5uajWOx34KjB7LHWp8lCBQ1j7MAQIblRWJeMzX4QdVKT 9C67aICpjtggzi4Pg8nGkFFRgC3HCUYPR9MWI06WNESZ9noSRdSUsM8+bmWv1w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1768238372; a=rsa-sha256; cv=none; b=dzUo46QuGK547eF/XpxqKHEOHypIAtKQYPvwCrs2dPsv1gDcwAn0iMCHfBasBERCq2ti74 n+AUxLc4uMg+5f3a1YaiDARba4/zL0M9Sx++RiwR9iPgp+0YwYTggCb0z+/gW5i16oGV+R 7gsq5axJ74Z0LnDyryKfkwPUqTxPlUft5pUTZfyRHDz8xrAd6CDv6/0nOSVpU3Osc5umtl gtWcsUohxbe3zbJr8o9i+GB8oIPouhp4zoQrB/fhKp54R66wSqfo3bVMNAIYT52MGRGVEV VECzBJN9eDYOE6EZoYaHxgpw1uwbPC52U5YUPGtmjjSetU4bNXoswV9QDYF3mA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dqfJ36DhRzcBL for ; Mon, 12 Jan 2026 17:19:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36aa8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 12 Jan 2026 17:19:31 +0000 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=B8rg?=rav Subject: git: ee28edf75462 - stable/14 - libgeom: Improve type safety of xml2tree code 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/14 X-Git-Reftype: branch X-Git-Commit: ee28edf7546270091fab3626c7f55b5919e7cee8 Auto-Submitted: auto-generated Date: Mon, 12 Jan 2026 17:19:31 +0000 Message-Id: <69652d23.36aa8.5b7d1e11@gitrepo.freebsd.org> The branch stable/14 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=ee28edf7546270091fab3626c7f55b5919e7cee8 commit ee28edf7546270091fab3626c7f55b5919e7cee8 Author: Dag-Erling Smørgrav AuthorDate: 2026-01-03 09:10:03 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-01-11 02:30:31 +0000 libgeom: Improve type safety of xml2tree code When resolving references, assert that the type of the object we find is what we expect. This will help prevent memory corruption if two objects of different types somehow end up with the same identifier. MFC after: 1 week Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D54454 (cherry picked from commit 4b0d5d1d6a7c9773e38882feb4747a76b37a645c) --- lib/libgeom/geom_xml2tree.c | 54 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/lib/libgeom/geom_xml2tree.c b/lib/libgeom/geom_xml2tree.c index 81f7de1be263..03210947d431 100644 --- a/lib/libgeom/geom_xml2tree.c +++ b/lib/libgeom/geom_xml2tree.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -358,14 +359,47 @@ geom_lookupid(const struct gmesh *gmp, const void *id) } static void * -geom_lookupidptr(struct gmesh *gmp, const void *id) +geom_lookup_class(const struct gmesh *gmp, const void *id) { struct gident *gip; - gip = geom_lookupid(gmp, id); - if (gip) - return (gip->lg_ptr); - return (NULL); + if ((gip = geom_lookupid(gmp, id)) == NULL) + return (NULL); + assert(gip->lg_what == ISCLASS); + return (gip->lg_ptr); +} + +static void * +geom_lookup_geom(const struct gmesh *gmp, const void *id) +{ + struct gident *gip; + + if ((gip = geom_lookupid(gmp, id)) == NULL) + return (NULL); + assert(gip->lg_what == ISGEOM); + return (gip->lg_ptr); +} + +static void * +geom_lookup_provider(const struct gmesh *gmp, const void *id) +{ + struct gident *gip; + + if ((gip = geom_lookupid(gmp, id)) == NULL) + return (NULL); + assert(gip->lg_what == ISPROVIDER); + return (gip->lg_ptr); +} + +static void * __unused +geom_lookup_consumer(const struct gmesh *gmp, const void *id) +{ + struct gident *gip; + + if ((gip = geom_lookupid(gmp, id)) == NULL) + return (NULL); + assert(gip->lg_what == ISCONSUMER); + return (gip->lg_ptr); } int @@ -441,15 +475,15 @@ geom_xml2tree(struct gmesh *gmp, char *p) /* Substitute all identifiers */ LIST_FOREACH(cl, &gmp->lg_class, lg_class) { LIST_FOREACH(ge, &cl->lg_geom, lg_geom) { - ge->lg_class = geom_lookupidptr(gmp, ge->lg_class); + ge->lg_class = geom_lookup_class(gmp, ge->lg_class); LIST_FOREACH(pr, &ge->lg_provider, lg_provider) { - pr->lg_geom = geom_lookupidptr(gmp, pr->lg_geom); + pr->lg_geom = geom_lookup_geom(gmp, pr->lg_geom); } LIST_FOREACH(co, &ge->lg_consumer, lg_consumer) { - co->lg_geom = geom_lookupidptr(gmp, co->lg_geom); + co->lg_geom = geom_lookup_geom(gmp, co->lg_geom); if (co->lg_provider != NULL) { - co->lg_provider = geom_lookupidptr(gmp, - co->lg_provider); + co->lg_provider = geom_lookup_provider(gmp, + co->lg_provider); if (co->lg_provider != NULL) { LIST_INSERT_HEAD( &co->lg_provider->lg_consumers,