From nobody Mon Jan 12 17:19:44 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 4dqfJK1qlGz6NrhS for ; Mon, 12 Jan 2026 17:19:45 +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 4dqfJJ4fyTz42G2 for ; Mon, 12 Jan 2026 17:19:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768238384; 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=NkZg5ppTbnX77kNIwvdk9Y43iu/Of9Wt/O8Bzg+tB5M=; b=Y1xZv9m7G3cIsct9hJG/wc+rEnd9rmzVcc1X8wvRg/xKZiLBV9kWSjtW1Ro0l8W3d1aLvL Oa4J7xKsLvcQEcnxMPHgVC2dqnyFrluRvgJzDMvM4t0wsooa5pF8MKow4Drq3aMMZKFSJB +kIEiCNxD+Aca9XEjrH5yUHza9fChfOzlRn8HIFAw7zorTQb9Z4T1OBIxwakLFlRhw7FuZ nQrBYN/j0etPO0hS5pBgKmrJdkIGQ1EAUIjHnoImFtjh3b03zOpp1LtK6XjLztU4OFiOMx DSYj9HDxtlAjeKPzutQcCNB4RPGD+QKkCtMS47KCUFPyklHxcRgRpaynO7uFAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768238384; 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=NkZg5ppTbnX77kNIwvdk9Y43iu/Of9Wt/O8Bzg+tB5M=; b=KP80cWmqnimMxeInniZ41UgbOjUb1MbV5VoTDvG/JRzfay25vp65yPTF29rAvpUnAy9Kxj E0DUcxtUgp/dMl+idyLA65NyKMbV57lyB06iOt7G8TCW6AuLvdZThb4pqXpI/UwYqHaDZp Sk9CzHevQBNMUU0FT9m0j80S6KgZ9bRvhvcQ8yDh+WZfil48mh4U+KpvjpZurlhIxJojf2 NxZXoLZ5PHbHCb9Bk6pJqvD9LY6nOSOx+VLyE6PkxewBd2Meyh3I194Ms5azBZUZgzsVxp qmOrv0PYCWQMV52yEts+0WVrhtmBBKLPdoydNEs5CxHtBxA0ZlGArGA4V0Fh8Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1768238384; a=rsa-sha256; cv=none; b=kJlNeIQf0+zssuu0hjS15PYHiEYGB4C+JNypgQO6bsglkXPSpZ+eGo7xZ7PgGNFpCriqz1 n5+OcF/kj38G16w5DvMwSXUI69upMI9QmQvAO5YpYaxIL1w6z3EgsnYPTUNjmwTMrR4A73 8DZIGD5RWnHjivcEdviSwzcKp3Eqs5Z/HklcUH64feQ99PGZCA4izNUS9JFeYlAFSNOO8D k0OyJyhqFT3Zcp7nvIPteftcsjYCbrJSzjXkDP81q7O77PD/990qBdpt00UW7Rl3g4khR3 6maxXAjVF3ByB7UtQLsDMGxp9UQnPCk3/40747gOi+nXLAP0j6AoAN0tGR4tew== 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 4dqfJJ3xPGzcMt for ; Mon, 12 Jan 2026 17:19:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3674f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 12 Jan 2026 17:19:44 +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: d39abff4ce1e - stable/13 - 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/13 X-Git-Reftype: branch X-Git-Commit: d39abff4ce1eefdee1a17f3bd47d54c8187f667e Auto-Submitted: auto-generated Date: Mon, 12 Jan 2026 17:19:44 +0000 Message-Id: <69652d30.3674f.72188849@gitrepo.freebsd.org> The branch stable/13 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=d39abff4ce1eefdee1a17f3bd47d54c8187f667e commit d39abff4ce1eefdee1a17f3bd47d54c8187f667e Author: Dag-Erling Smørgrav AuthorDate: 2026-01-03 09:10:03 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-01-11 02:30:46 +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,