From 641bd2fe5e16052761ad6ddc9c2552eb1e18ade9 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Mon, 13 Sep 2021 11:34:12 -0400 Subject: [PATCH] Fix potential segfault in COORDS DataSet (#916) * Protect when output frame does not have remd indices allocated. * Revision bump for fix of potential segfault in DataSet_Coords_CRD.cpp. --- src/DataSet_Coords_CRD.cpp | 2 +- src/Version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DataSet_Coords_CRD.cpp b/src/DataSet_Coords_CRD.cpp index ecafc785a6..4105d95348 100644 --- a/src/DataSet_Coords_CRD.cpp +++ b/src/DataSet_Coords_CRD.cpp @@ -125,7 +125,7 @@ static inline void ArrayToFrame(int idx, Frame& fOut, CompactFrameArray const& f if (frames_.HasComponent(CoordinateInfo::REDOX)) fOut.SetRedOx(frames_.GetVal(idx, CoordinateInfo::REDOX)); if (frames_.HasComponent(CoordinateInfo::TIME)) fOut.SetTime(frames_.GetVal(idx, CoordinateInfo::TIME)); if (frames_.HasComponent(CoordinateInfo::STEP)) fOut.SetStep(frames_.GetVal(idx, CoordinateInfo::STEP)); - if (frames_.HasComponent(CoordinateInfo::REMD_INDICES)) frames_.GetToIntPtr(fOut.iAddress(), idx, CoordinateInfo::REMD_INDICES); + if (frames_.HasComponent(CoordinateInfo::REMD_INDICES) && !fOut.RemdIndices().empty()) frames_.GetToIntPtr(fOut.iAddress(), idx, CoordinateInfo::REMD_INDICES); if (frames_.HasComponent(CoordinateInfo::REPIDX)) fOut.SetRepIdx(frames_.GetVal(idx, CoordinateInfo::REPIDX)); if (frames_.HasComponent(CoordinateInfo::CRDIDX)) fOut.SetCrdIdx(frames_.GetVal(idx, CoordinateInfo::CRDIDX)); } diff --git a/src/Version.h b/src/Version.h index d3cd984d75..6a9e15fce1 100644 --- a/src/Version.h +++ b/src/Version.h @@ -12,7 +12,7 @@ * Whenever a number that precedes is incremented, all subsequent * numbers should be reset to 0. */ -#define CPPTRAJ_INTERNAL_VERSION "V5.4.1" +#define CPPTRAJ_INTERNAL_VERSION "V5.4.2" /// PYTRAJ relies on this #define CPPTRAJ_VERSION_STRING CPPTRAJ_INTERNAL_VERSION #endif