This is an automated email from the ASF dual-hosted git repository.

alexismanin pushed a commit to branch fix/image-tile-matrix-get-tile
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 3f10b8f44ae15733cf7c08e908d11aefc53315d3
Author: Alexis Manin <[email protected]>
AuthorDate: Mon May 18 17:54:22 2026 +0200

    fix(Image): Prevent reshaped image to return data outside its domain
    
    Avoid user to be able to access areas in source images that are not 
accesible from current reshaped image
---
 .../main/org/apache/sis/image/internal/shared/ReshapedImage.java   | 4 ++++
 .../org/apache/sis/image/internal/shared/ReshapedImageTest.java    | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/internal/shared/ReshapedImage.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/internal/shared/ReshapedImage.java
index 17bebfaab5..778800f1f7 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/internal/shared/ReshapedImage.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/internal/shared/ReshapedImage.java
@@ -95,8 +95,12 @@ public final class ReshapedImage extends PlanarImage {
             final var r = (ReshapedImage) source;
             offsetX = addExact(offsetX, r.offsetX);
             offsetY = addExact(offsetY, r.offsetY);
+            if (offsetX < r.offsetX || offsetY < r.offsetY || offsetX + width 
> r.offsetX + r.width || offsetY + height > r.offsetY + r.height) {
+                throw new IllegalArgumentException("It is forbidden to try to 
expand access over source image");
+            }
             source  = r.source;
         }
+
         this.source   = source;
         this.offsetX  = toIntExact(offsetX);
         this.offsetY  = toIntExact(offsetY);
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/internal/shared/ReshapedImageTest.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/internal/shared/ReshapedImageTest.java
index 10884f8d3b..1407f6bf85 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/internal/shared/ReshapedImageTest.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/image/internal/shared/ReshapedImageTest.java
@@ -221,5 +221,12 @@ public final class ReshapedImageTest extends TestCase {
                 { 400, 401 },
                 { 410, 411 }
         });
+
+        try {
+            ReshapedImage.singleTile(lastTile, 1, 0);
+            fail("Tile data should not be accessible from previously 
restricted reshaped image");
+        } catch (IllegalArgumentException e) {
+            // Expected
+        }
     }
 }

Reply via email to