From f356ea40d12889a9b3517be42762583b49e470a7 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Thu, 23 Nov 2017 01:05:27 -0700 Subject: [PATCH] bsputils: add more bounds-checked accessors --- common/bsputils.cc | 12 ++++++++++++ include/common/bsputils.hh | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/common/bsputils.cc b/common/bsputils.cc index f59216e8..edd13966 100644 --- a/common/bsputils.cc +++ b/common/bsputils.cc @@ -42,6 +42,18 @@ int Face_GetNum(const mbsp_t *bsp, const bsp2_dface_t *f) return static_cast(diff); } +const bsp2_dnode_t *BSP_GetNode(const mbsp_t *bsp, int nodenum) +{ + Q_assert(nodenum >= 0 && nodenum < bsp->numnodes); + return &bsp->dnodes[nodenum]; +} + +const dplane_t *BSP_GetPlane(const mbsp_t *bsp, int planenum) +{ + Q_assert(planenum >= 0 && planenum < bsp->numplanes); + return &bsp->dplanes[planenum]; +} + const bsp2_dface_t *BSP_GetFace(const mbsp_t *bsp, int fnum) { Q_assert(fnum >= 0 && fnum < bsp->numfaces); diff --git a/include/common/bsputils.hh b/include/common/bsputils.hh index 0001c957..2a731e8c 100644 --- a/include/common/bsputils.hh +++ b/include/common/bsputils.hh @@ -28,8 +28,13 @@ const dmodel_t *BSP_GetWorldModel(const mbsp_t *bsp); int Face_GetNum(const mbsp_t *bsp, const bsp2_dface_t *f); + +// bounds-checked array access (assertion failure on out-of-bounds) +const bsp2_dnode_t *BSP_GetNode(const mbsp_t *bsp, int nodenum); +const dplane_t *BSP_GetPlane(const mbsp_t *bsp, int planenum); const bsp2_dface_t *BSP_GetFace(const mbsp_t *bsp, int fnum); bsp2_dface_t *BSP_GetFace(mbsp_t *bsp, int fnum); + int Face_VertexAtIndex(const mbsp_t *bsp, const bsp2_dface_t *f, int v); void Face_PointAtIndex(const mbsp_t *bsp, const bsp2_dface_t *f, int v, vec3_t point_out); plane_t Face_Plane(const mbsp_t *bsp, const bsp2_dface_t *f);