diff OrthancFramework/Sources/Images/ImageAccessor.cpp @ 5838:4b47151dea4c

fix crashes if handling very large images
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 16 Oct 2024 18:27:31 +0200
parents f7adfb22e20e
children
line wrap: on
line diff
--- a/OrthancFramework/Sources/Images/ImageAccessor.cpp	Mon Sep 30 10:22:12 2024 +0200
+++ b/OrthancFramework/Sources/Images/ImageAccessor.cpp	Wed Oct 16 18:27:31 2024 +0200
@@ -139,7 +139,7 @@
     return pitch_;
   }
 
-  unsigned int ImageAccessor::GetSize() const
+  size_t ImageAccessor::GetSize() const
   {
     return GetHeight() * GetPitch();
   }
@@ -165,7 +165,7 @@
   {
     if (buffer_ != NULL)
     {
-      return buffer_ + y * pitch_;
+      return buffer_ + static_cast<size_t>(y) * static_cast<size_t>(pitch_);
     }
     else
     {
@@ -184,7 +184,7 @@
 
     if (buffer_ != NULL)
     {
-      return buffer_ + y * pitch_;
+      return buffer_ + static_cast<size_t>(y) * static_cast<size_t>(pitch_);
     }
     else
     {
@@ -325,8 +325,8 @@
     else
     {
       uint8_t* p = (buffer_ + 
-                    y * pitch_ + 
-                    x * GetBytesPerPixel());
+                    static_cast<size_t>(y) * static_cast<size_t>(pitch_) +
+                    static_cast<size_t>(x) * static_cast<size_t>(GetBytesPerPixel()));
 
       if (readOnly_)
       {