From nobody Mon Jan 12 17:18:46 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 4dqfHC3VRCz6Nr3G for ; Mon, 12 Jan 2026 17:18:47 +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 4dqfHB6Nvzz40Zb for ; Mon, 12 Jan 2026 17:18:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768238326; 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=C9u5zjWvC5Jn3SHvaZn8L3Q/DgTF+yLc9RWR92ph5Vo=; b=JyHzV1f4ePeATtzYSe5vKUuPoJj9OuZdfM8dR1VL1Hs9kSTQfqo5vvNpsl3PtkzPfvdbPP wx8j0mhJa32PVnYw9Sz2YEETaZh7ZqD5WBZ7n45g9XAjSlTxRWMsgeSO7BJCOEJj7hwu3I 9xnlQNlipRle0yx5875ayzKW5D+0qBpiGvIqmEoTBIvzF8MBM2LkLHH9Agz4qv419FgXuS NL2AwKp1PgdMLavXX/u7DA/+ke5qhqPwJ6fHJxJxvYGOmE8NCQI2506lCrLYbTwUbiheAk WxJKhC5RkYY4u+R/db1eeih+iDeAnu7TwBrTJZZaWQA9uuepTX5KsvCApQ9tDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1768238326; 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=C9u5zjWvC5Jn3SHvaZn8L3Q/DgTF+yLc9RWR92ph5Vo=; b=IfJ5kky1IXhnMbOYQJTWBPoDHxHlDUvTBGCbKSJEzxohi3p8oZc4+6g8fXZVKnr3ReoEte Kq5xociPy91nRkl5UAcgKtKPRFtTMDASL4pmKsvz6EJ1jDI8Y2eYan5TCS3ROICEIY9zft kiTU0usG7dx9SjeLWhO4vqQDqlL20swKViBYNjIFPDKuu7CMjIhpd7v+m5xcQWKdGVutX4 59e4fIWzWlRGIP3YMb0i8GkH9GrXfKhRw7c6frzzqTvzTXooHgpcMsmU0NdN+5enc0ssR1 wPPz84oteH+Xw81+Nj+lUSLJc6woVwlDBg45TyuR5eURnbq59KREofmL3WQixA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1768238326; a=rsa-sha256; cv=none; b=Z0ViOyxCSBQ+i8JH03ivEHq6FaXJ1SH9MKE8rnuKYDtPYU+R/gOY97sXXp5UF/l7gPeUe8 Zc912hvzQIaL5VU2mvFi74zucc3KJnobsBSmo+XJXzStOfluv7vShUMZMCWkgUL5TaeJry MW9mnOK6kGSM41GB++77WbP41dMa4+hP9W3YpWBkjTSyEndrl+IfGUvdXOKPFijXIMJiPy FlPSO2zSh3Z4vRFq9iSDktO5SwfmjKypghf9gvVCwcYTeyDolQk9Yb/QkYJbbZP36LCgoO Ufxj59PE/XodDzmupa6scXTuAEtKIGYInZdhm0gX1DJRFdkOH2/KK/umoA6Ejw== 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 4dqfHB5tLZzcBH for ; Mon, 12 Jan 2026 17:18:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 35a46 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 12 Jan 2026 17:18:46 +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: fba2421c6893 - stable/15 - 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/15 X-Git-Reftype: branch X-Git-Commit: fba2421c689319ede3079f7010ede98a0843c4ee Auto-Submitted: auto-generated Date: Mon, 12 Jan 2026 17:18:46 +0000 Message-Id: <69652cf6.35a46.42dfa1af@gitrepo.freebsd.org> The branch stable/15 has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=fba2421c689319ede3079f7010ede98a0843c4ee commit fba2421c689319ede3079f7010ede98a0843c4ee Author: Dag-Erling Smørgrav AuthorDate: 2026-01-03 09:10:03 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-01-12 17:18:22 +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,