From 3c0241d8b58c01aeb50dd69a683fd4786eeb3367 Mon Sep 17 00:00:00 2001 From: Fredrik Holmqvist Date: Tue, 28 Dec 2010 11:23:40 +0000 Subject: [PATCH] While the functions didn't use the delta for i==0 accessing arrays at [0 - 1] can't be good. CID 3197. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39974 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/runtime_loader/images.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/system/runtime_loader/images.cpp b/src/system/runtime_loader/images.cpp index 0d1914fa21..fdc3b96798 100644 --- a/src/system/runtime_loader/images.cpp +++ b/src/system/runtime_loader/images.cpp @@ -301,8 +301,8 @@ map_image(int fd, char const* path, image_t* image, bool fixed) uint32 regionAddressSpecifier; get_image_region_load_address(image, i, - loadAddress - image->regions[i - 1].vmstart, fixed, - loadAddress, regionAddressSpecifier); + i > 0 ? loadAddress - image->regions[i - 1].vmstart : loadAddress, + fixed, loadAddress, regionAddressSpecifier); if (i == 0) { reservedAddress = loadAddress; addressSpecifier = regionAddressSpecifier; @@ -333,8 +333,9 @@ map_image(int fd, char const* path, image_t* image, bool fixed) snprintf(regionName, sizeof(regionName), "%s_seg%lu%s", baseName, i, (image->regions[i].flags & RFLAG_RW) ? "rw" : "ro"); - get_image_region_load_address(image, i, image->regions[i - 1].delta, - fixed, loadAddress, addressSpecifier); + get_image_region_load_address(image, i, + i > 0 ? image->regions[i - 1].delta : 0, fixed, loadAddress, + addressSpecifier); // If the image position is arbitrary, we must let it point to the start // of the reserved address range.