Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37759968
en ru br
Репозитории ALT

Группа :: Система/Библиотеки
Пакет: spatialindex

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: fix-oob-crash.patch
Скачать


From d056d8e577b43740180f1a7d2295f77c9149d8a1 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 28 Nov 2017 05:03:40 -0500
Subject: [PATCH] Fix array allocation in Index_GetLeaves.
When filling the array, it iterates through `nDimension` elements, but
only allocates `nLeafSizes[k]` entries. This causes out-of-bounds access
when dimensions are greater than leafs.
---
 src/capi/sidx_api.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/capi/sidx_api.cc b/src/capi/sidx_api.cc
index af3bc82..b33ba3f 100644
--- a/src/capi/sidx_api.cc
+++ b/src/capi/sidx_api.cc
@@ -1693,8 +1693,8 @@ SIDX_C_DLL RTError Index_GetLeaves(	IndexH index,
 			(*nLeafSizes)[k] = (uint32_t)ids.size();
 
 			(*nLeafChildIDs)[k] = (int64_t*) malloc( (*nLeafSizes)[k] * sizeof(int64_t));
-			(*pppdMin)[k] = (double*) malloc ( (*nLeafSizes)[k] *  sizeof(double));
-			(*pppdMax)[k] = (double*) malloc ( (*nLeafSizes)[k] *  sizeof(double));
+			(*pppdMin)[k] = (double*) malloc (*nDimension * sizeof(double));
+			(*pppdMax)[k] = (double*) malloc (*nDimension * sizeof(double));
 			for (uint32_t i=0; i< *nDimension; ++i) {
 				(*pppdMin)[k][i] = b->getLow(i);
 				(*pppdMax)[k][i] = b->getHigh(i);
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin