From f2ea13c0231af884a4641325b4c55da0301d6442 Mon Sep 17 00:00:00 2001
From: Andreas Schenk <andreas_schenk@hms.harvard.edu>
Date: Mon, 12 Nov 2012 08:39:11 -0500
Subject: [PATCH] fix for boundary check in value holder

---
 modules/img/base/src/image_state/value_holder.cc | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/modules/img/base/src/image_state/value_holder.cc b/modules/img/base/src/image_state/value_holder.cc
index 71c79d1d7..aafae4b54 100644
--- a/modules/img/base/src/image_state/value_holder.cc
+++ b/modules/img/base/src/image_state/value_holder.cc
@@ -62,8 +62,13 @@ size_t calc_volume(const Size& s)
   {
     ++numbits;
   }
+  tmp=sizeof(V);
+  while (tmp >>= 1)
+  {
+    ++numbits;
+  }
   // check if number of pixels (2**(numbits+1)) larger than what size_t can handle
-  if(numbits>=sizeof(size_t)*sizeof(V)*8){
+  if(numbits>=sizeof(size_t)*8){
       throw std::bad_alloc();
   }
   return static_cast<size_t>(s[0])*static_cast<size_t>(s[1])*static_cast<size_t>(s[2]);
-- 
GitLab