From nobody Sat Jan 3 09:10:42 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 4djvtD17qTz6Lx6q for ; Sat, 03 Jan 2026 09:10:44 +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 4djvtC2JxTz3Jw6 for ; Sat, 03 Jan 2026 09:10:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1767431443; 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=zWY+jUFaHUu8rwnWUesz8F8di6K8nRcoP8hRfdYdqtk=; b=Xa9ZTl3hTnfQHoxQf+MhVlthCPWLAW4hi036ZGYSAx6QEa5gXGhFMCbgH9qzoNFZyT1VqM EYXk9Eha6NFnptmiM+Sw6+S8v7e+hHGt8NXd+xX2iUPqL0WyeidsYGMIF51VO5ox3zzAYy vhypMd7tdyZnKULnYwFZhROTqnzFhb3evKwKdiOYrZzlWtMCob8vcZf1GMhri+PqLJ6N2g N382vbGTgoGEc7OTeGpCU+BnrXUVL8xwzP5sw4LYcLT7jz03TjcLILVnSe16HTU9/lmqFR b2DOKujHoiGuS8jbRvBgvV7NQHkPaA36/z7QI+MO0ybAeozcdY0VLILacah/Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1767431443; 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=zWY+jUFaHUu8rwnWUesz8F8di6K8nRcoP8hRfdYdqtk=; b=PCdGCCZIqr86Vdr/KmqyOMId9RcG57HbbcaH40ZQLPYWiVLnke+mdgeV7FuPZJoMJcDX+8 D8s/eHBeL4YItr3kJyVAUVLy/z3TUL73ohGIAc0Xmx8Gxg3eNVYe6pGdC3L1aRLtUDIhcj pL+yGHDU2gRD6d5+Wrxagu2f952C+HjDDFgHNd3friqjGm9+DTr9zWj/bxtUe6J5JONNcF akP+z7pyrC5vELSYDriTBs8NkqF1y7fXMT3xBN2nzVKAU4PaDHs95I8Vc2c5AUllGuR4eo C5zds/JU/Q6xSCPQUGv5LCDUAd4hwg7Kn4DeTPFa10j2zRI2YYw+aRyO8s9MbQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1767431443; a=rsa-sha256; cv=none; b=VPTd6BBCQ6pxaBCePBX1kCAuqjzFi4iMErR/Be9x2GkjUnD8Y4INeEzYupQMRwQNKLlJ/M 8xMss5bpu3FxbNfoZHD1AwGLHSNCdHot41r0G/HdSx4bXG1q89eFqT9+76/qITutf9Xi/7 sw87ARtPirw868V6LxYRWxxcgu41gWCvGE5arQb1ZE7zRcubJ5gA8eWkV8qf1grRO5p0RL zNyq/7F0GiuVVw/szCg0zouniV5Vs+XrbLvPkKH96ow5xtwX/JYpeG8nvDMFkdPL0J4PXP vHJNli1FK4tepAsHaZXxvbOjYAo7j0HTBpqBsD5maK2b5Jei1xw3gNAhoW2aPQ== 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 4djvtB5BCbzxR1 for ; Sat, 03 Jan 2026 09:10:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 96fc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 03 Jan 2026 09:10:42 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 4b0d5d1d6a7c - main - 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/main X-Git-Reftype: branch X-Git-Commit: 4b0d5d1d6a7c9773e38882feb4747a76b37a645c Auto-Submitted: auto-generated Date: Sat, 03 Jan 2026 09:10:42 +0000 Message-Id: <6958dd12.96fc.47b0ebd2@gitrepo.freebsd.org> The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=4b0d5d1d6a7c9773e38882feb4747a76b37a645c commit 4b0d5d1d6a7c9773e38882feb4747a76b37a645c Author: Dag-Erling Smørgrav AuthorDate: 2026-01-03 09:10:03 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-01-03 09:10:23 +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 --- 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,